核心思想(以排序10萬個手機號爲例子):字符串
比較兩個手機號碼a,b的大小,若是在前面幾位中a已經比b大了,那後面幾位就不用看了。class
藉助穩定排序算法的思想,能夠先按照最後一位來排序手機號碼,而後再按照倒數第二位來從新排序,以此類推,最後按照第一個位從新排序。遍歷
通過11次排序後,手機號碼就變爲有序的了。數據
每次排序有序數據範圍較小,可使用桶排序或計數排序來完成。
di
使用條件:
假設咱們如今須要對D,a,F,B,c,A,z這個字符串進行排序,要求將其中全部小寫字母都排在大寫字母的前面,但小寫字母內部和大寫字母內部不要求有 序。好比通過排序以後爲a,c,z,D,F,B,A,這個如何來實現呢?若是字符串中存儲的不只有大小寫字母,還有數字。要將小寫字母的放到前面,大寫字母 放在最後,數字放在中間,不用排序算法,又該怎麼解決呢?
解答: 用兩個指針a,b:a指針從頭開始日後遍歷,遇到大寫字母就停下,b從後往前遍歷,遇到小寫字母就停下,交換a,b指針對應的元素;重複如上過程,直到a.b指針相交。
對於小寫字母放前面,數字放中間,大寫字母放後面,能夠先將數據分爲小寫字母和非小寫字母兩大類,進行如上交換後再在非小寫字母區間內分爲數字和大寫字母作一樣處理