Without knowing the specifics of your algorithm here are a couple things you can try:
If you want a simple method that keeps the same highs and lows; but has a greater amount of points fall in the middle range you can simply generate your terrain off two samples of noise instead of one, and average the results (or sum them and use 2 * maxval as your max instead of maxval). This will lead to still having the occasional sharp peak/valley where the noise lines up but cause a smoother terrain overall.
If you want to have what you have now but with specific shapes to your peeks and valleys you can play around with a graphing calculator to find a curve that you like for the spread of results you can get. For example if you are using values between 0 and 1 for your height values then applying a function like (tanh(x)-1)/2 to the points will smooth off your extremes while giving a closeish to linear range around the middle band. Make sure if you chose this route to play with the values. doing things like halving or doubling x going in will effect the overall steepness of your terrain without impacting the max or min height and other changes will have other potentially useful effects.
As a side note, some of the apperance of sharpness come from your textures. If the style is not desired, addressing it could help. If you cannot afford an approach such as multisampling (blending between two textures based on height) I would make transition textures for small bands between the high contrast steps to avoid the hard zigzag lines.