這是算法導(dǎo)論里面的算法匾荆,排序算法是穩(wěn)定的蝗柔。
思考:
為什么9~11的for循環(huán)里要倒著遍歷塘辅?
這樣倒著遍歷,而且放進(jìn)去一個(gè)就將C數(shù)組對應(yīng)的值(表示前面有多少元素小于或等于A[i])減去一荠商。如果有相同的數(shù)x1,x2寂恬,那么相對位置后面那個(gè)元素x2放在(比如下標(biāo)為4的位置),相對位置前面那個(gè)元素x1下次進(jìn)循環(huán)就會被放在x2前面的位置3(因?yàn)镃[A[J]]--)结啼。從而保證了穩(wěn)定性掠剑。
2016.3.6更新
思考:為什么計(jì)數(shù)排序是穩(wěn)定的?為什么第9行要倒著遍歷郊愧?
解決:
穩(wěn)定性在于:在程序6,7行執(zhí)行結(jié)束后朴译,C數(shù)組中的元素C[i]代表著:小于等于i的輸入元素的個(gè)數(shù)。
而9-11行倒著遍歷時(shí)属铁,如上述所說眠寿。
關(guān)鍵是 C[i]代表著:小于等于i的輸入元素的個(gè)數(shù)。
那么焦蘑,如果 C[i]代表著:大于等于i的輸入元素的個(gè)數(shù)盯拱。我想9-11行正著遍歷才可以保證穩(wěn)定性。試驗(yàn)后例嘱,在此貼出狡逢。