對字串進行排序

2021-08-10 22:22:01 字數 1208 閱讀 5991

給三個字串,對它們進行排序,之前寫過對三個數排序,定義乙個中間變數,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...