我正在使用選擇排序從板球團隊中排序名稱列表。選擇排序邏輯錯誤
該排序在第一次重複名稱3次後消除了我排序的數組中的兩個其他名稱。
輸入從陣列(按順序):
克拉克沃森啤酒科普蘭Haddin哈里斯休斯赫西約翰遜卡瓦賈里昂沼澤帕丁森龐廷Siddle華納
排序陣列後輸出:
啤酒啤酒啤酒科普蘭Haddin哈里斯休斯赫西·約翰遜卡瓦賈里昂沼澤帕丁森龐廷
代碼:
void sort_names (Team_t player[]) {
int pos;
int min;
int i, str_check;
char *temp = NULL;
for (pos = 0; pos < MAX_PLYR; pos++) {
min = pos;
for (i = (pos + 1); i < MAX_PLYR; i++) {
str_check = strcmp(player[i].pname, player[min].pname);
if (str_check < 0) {
min = i;
}
}
if (min != pos) {
temp = player[pos].pname;
strcpy(player[pos].pname, player[min].pname);
strcpy(player[min].pname, temp);
}
}
}
您是否嘗試用調試器(甚至是筆和紙)逐步執行代碼以查看發生了什麼? – Vicky
我可能錯過了一些東西,我已經桌子檢查過幾次,並且把它從地獄中解救出來。 –
得到'啤酒'後你的代碼就醉了: -/ – DhruvPathak