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

字符串字典排序

#包含?& ltiostream & gt

#包含?& ltstring.h & gt

使用?命名空間?std

int?主()

{

夏爾?* t[5];?//地址指針存儲在5個字符串中

夏爾?* p;//記錄字符串地址的指針。

int?I,j,min

cout?& lt& lt?請輸入五個字符串?& lt& lt?endl

for(I = 0;?我& lt5;?i++)

{

t[i]?=?新的?char[20];?//為字符串存儲申請空間。

cin?& gt& gt?t[I];?//輸入字符串

}

/*?心想:

?*?1.從當前字符串開始,與所有後續字符串進行比較,並找出最小的字符串(即,按字母順序)

?*?應為第壹個)字符串是第壹個字符串,則最小的字符串與

?*?當前字符串換位;

?*?2.從下壹個字符串開始繼續上壹個操作,直到只剩下壹個字符串。

?*?(只剩壹個字符串沒什麽好比較的,所以下面的循環I是從0到0。

?*?4。)

?*/

for(I = 0;?我& lt4;?i++)

{

敏?=?我;?//我們假設第I個字符串是其余字符串中的第壹個字符串,它

?//位置是最小值。

為了什麽?(j = I+1;?j & lt5;?J++)//與當前字符串後第4個字符串的i+1進行比較。

如果?(strcmp(t[min,t[j])& gt;0)//如果t[j]小於目前找到的最小字符串,比如說

敏?=?j;//Ming較小的字符串應該是t[j],當前最小的字符串。

//position要更新到j,所以記錄j到min的位置,然後繼續。

//繼續找,?直到妳跳出這個循環

/*?跳出循環後,min是當前最小串的位置,那麽t[min]和t[i]互換位置?*/

/*?註意,地址存儲在t[i]和t[min]中。只是交換地址嗎?*/

p=?t[I];//將t[i]字符串的第壹個地址記錄到P指針。

t[i]?=?t[min];//將t[min]字符串的第壹個地址賦給t[i],t[i]中的原地址將被覆蓋。

t[min]?=?p;?//將原t[i]字符串的第壹個地址賦給t[min]

}

cout?& lt& lt?endl

for(I = 0;?我& lt5;?I++)//輸出字符串

cout?& lt& lt?t[i]?& lt& lt?endl

for(I = 0;?我& lt5;?I++)//可用空間

刪除?t[I];

回歸?0;

}