給三個字串,對它們進行排序,之前寫過對三個數排序,定義乙個中間變數,a,b,c依次比較,如果不是順序,就用臨時變數對它們進行交換。字串也可以用這樣的方法進行排序。
void sort(const char *a,const char *b,const char *c)//字串不能被修改,應該用const修飾
if(strcmp(a,c)>0)
if(strcmp(b,c)>0)
printf("%s %s %s\n",a,b,c); //此時的a,b,c已經有序了 }
如果是對很多字串排序呢,上面的程式顯然就不合理了,因為需要比較的字串太多了。這個不好想的話,我們依然可以模擬對數字怎樣排序,如果很多數字要進行排序,首先把它們放到乙個陣列裡面,然後在進行排序。排序的方法有很多種,下面要說的是氣泡排序(公升序)
給出一組數:9 4 2 7 1
第一次冒泡:4 9 2 7 1
第二次冒泡:4 2 9 7 1
第三次冒泡 :4 2 7 9 1
第四次冒泡:4 2 7 1 9
經過一輪迴圈,最大的數就冒到了最底下,最後乙個數就有序了,然後下一輪就可以不用遍歷它了。可以看出如果有五個數,只需要進行4趟比較,有n個數,要進行 n-1 趟比較。 在第 1 趟比較中,要進行4次兩兩比較,在第 j 趟中要進行 n-j 次兩兩比較。
void bubblesort(int *a,int len) //氣泡排序,形參是陣列的首元素位址和陣列長度
} }
}void show(int *a,int len) //列印函式,列印出陣列現在的數字
}既然可以用陣列對數字進行排序,也可以用陣列對多個字串進行排序,陣列裡面儲存的是什麼呢?
是字串首元素的位址,這個陣列就是指標陣列,型別是char * ,所以這個陣列的首元素位址就是 char * * p.
void sort2(char **p,int len) //引數是指標陣列首元素的位址和它的長度
} }
}void show2(char **p,int len) //列印函式,輸出指標陣列的內容,引數就是這個指標陣列的首元素位址
}寫測試用例
int main() ;
bubble(a,6);
show(a,6);
char *b=;
sort2(b,4);
show2(b,4);
return 0; }
SQL對字串進行排序
假設字串中只由 a b c d 組成,且長度為7。並設函式replicate 字串 可以建立乙個 字串 的n個副本的字串,另外還有replace 目標字串 老字串 新字串 實現如下 begin declare instring char 7 set instring dcdbaab replicat...
使用radix sort 基排序對字串進行排序
這部分的 實現的操作是,對乙個列表裡面的字串按照字母順序排序,就像字典裡面的單詞排序一樣,舉例子如下 input jkttsszzo zie iukddrjdba bwjahzwiv yslzvnjdjg xkm aszcnljjl syniimbq hqgyd itvis output aszcn...
對字串排序
def main 字串 s helloworld 轉換成陣列 l list s 對陣列排序,注意,該方法沒有返回值 l.sort 轉換成陣列 s join l print s 結果如下 hwdellloor if name main main 然後sort再join。def main s hello...