The correlation of your sensor to output readings is near perfect so I presume your problem is temporal stability. bdk6 suggests good straightforward solutions to which I add taking a median of the three most recent values rather than an average of more. You can then get a quite stable temporal run with reduced lag from raw reading to filtered reading, compared with using an average which needs more readings for stability. This may be important for real time reading or control.
The trade-off with any form of filtering is that when there is a “true” spike in the data you will not or will hardly notice it.
I too had similar problems while working with lm35 temperature sensor.(The problem was poor connections of pins to the breadboard and the large gauge wire I used).Also I get such stray readings when I serial read from an arduino analog pin when the pin is left floating.I suggest you check your connections.
Also to filter out stray reading(though I have not worked with sharp) but speaking from experience working with ping sensors,I would evade stray readings using program code by putting an if ( value_from_Pin > 0 ){ //rest of your code}