當前位置:成語大全網 - 書法字典 - 字符數組字典排序

字符數組字典排序

通過鍵盤輸入n個學生的名字,然後根據字典排列輸出結果。

算法設計:

(1)定義壹個二維字符數組來存儲n名學生的姓名。

字符名稱【N】【13】;

(2)使用選擇性排序方法,通過比較函數strcmp()對N個字符串進行排序。

③輸出結果

選擇性分類思想

(1)在第壹遍中,從n條記錄中選擇關鍵字值最小的記錄作為第壹條記錄;

k = 0;

for(j = 0+1;j if(k!= 0){ t = a【k】;a【k】= a【I】;a【I】= t;}/*單元K和單元0的交換*/

(2)在第二遍中,從剩余的N-1條記錄中選擇具有最小關鍵字值的記錄作為第二條記錄;

k = 1;

for(j = 1+1;j if(k!= 1){ t = a【k】;a【k】= a【I】;a【I】= t;}

(3)通常,在第I遍中,選擇具有最小關鍵字值的記錄作為第I條記錄(I = 1,2,...n-1)從剩余的n-I+1中提取。

k = I-1;

for(j = I;j if(k!= 1){ t = a【k】;a【k】= a【I】;a【I】= t;}

對於有n個元素的數組A,用C語言進行選擇和排序的程序段為:

for(I = 0;i { k = i

for(j = I+1;j if(k!= I){ t = a【k】;a【k】= a【I】;a【I】= t;}

}

完全類似,我們將二維字符數組char name【N】【13】視為N個壹維字符數組:

名稱【0】,名稱【1】,名稱【2】,…,名稱【N-1】。

在選擇排序程序部分,比較兩個數字:

if(a【j】更改為:if(strcmp(name【j】,name【k】)

以及數據交換語句:{ t = a【k】;a【k】= a【I】;a【I】= t;}

更改為:{ strcpy(t,name【k】);strcpy(name【k】,namea【I】);strcpy(name【I】,t);}

完整的節目列表

#包含“stdio.h“

#包含“string.h“

主()

{ cahr name【10】【13】,temp【13】;int I;

for(I = 0;我& lt10;i++){

Printf(“請輸入%d名學生的姓名:\n“,I+1);

get(name【I】);

}

for(I = 0;我& lt9;i++)

{ k = I;

for(j = I+1;j & lt10;j++)if(strcmp(name【j】,name【k】)& lt;0)k = j;

如果(k!= I){ strcpy(temp,name【k】);

strcpy(name【k】,name【I】);strcpy(name【I】,temp);

}

}

printf(“10名學生的姓名按字典排列:\ n“);

for(I = 0;我& lt10;i++)printf(“\ n % s“,name【I】);

}