When ordering and a discount is appeared it doesnt mind the discounted price but the starting price of the product.So when ordering the products the ordering is not right.
Yes, that is the default. The sql can only sort on values in the db and not the dynamic price. The only way to change this would be to add cached ordering. Creation of the cache would also take some time.
Furthermore, if you show all discounted wares on top, then you attract customers to buy only discounted wares. The current way leads to more browsing and gives also a better impression of the discount.