我正在進行選擇排序。損壞的選擇排序C
我的問題是,如果您從「無效排序」中刪除我的所有代碼,程序將運行。只要你把所有的代碼放回去,「void sort」也不會去「void sort」中的第一個「printf」函數。我不知道什麼把一切都掛起來了。
這裏的第二個問題是,該函數應該做到這一點:
運行通過它們陣列[]與VARS:X(起點)溫度(臨時最低數目)和k(當前數目。 )它應該 - 對於每次迭代 - 從x開始,設置temp = x,設置k =(x + 1),然後k ++直到到達數組的末尾。如果array [k]小於array [temp],它應該設置temp等於k。然後在最後:交換數組[x]和數組[temp]並重新開始在(x + 1)
當它工作之前,我得到的唯一結果是x = 7(列表),它只會打印最後一個數字。 :/ wat做
此外,不需要,但是一個次要問題我該怎麼做我從void函數返回排序的數組?全球變數?還要別的嗎?
#include <stdio.h>
#define SIZE 8
void sort(int array[], int size)
{
printf("starting sort, declaring vars...");
int temp, placeholder, x, k;
printf("setting x...");
x = 0;
printf("size(%d), i(%d)", size, x);
printf("starting sort loop...");
while (x < (size - 1));
{
k = (x + 1);
temp = x;
while(k < size)
{
if(array[k] < array[temp])
temp = k;
k++;
}
printf("array[%d] is %d from array[%d]\n", x, array[temp], temp);
placeholder = array[temp];
array[temp]= array[x];
array[x] = placeholder;
printf("%d ", array[x]);
x++;
}
printf("\n");
}
int main(void)
{
int numbers[SIZE] = {4, 15, 16, 50, 8, 23, 42, 108 };
int i;
for (i = 0; i < SIZE; i++)
printf("%d ", numbers[i]);
printf("\ncounted and sorting...\n");
sort(numbers, SIZE);
for (int i = 0; i < SIZE; i++);
printf("%d", numbers[i]);
printf("\n");
return 0;
}
嘗試在所有打印語句之後放置'\ n',您的輸出可能會被緩衝 – Claudiu 2013-03-25 17:46:32
您是完全正確的。我做到了,現在它凍結在「無效排序」中的「while(x <(size - 1))」循環中。 – user2208569 2013-03-25 17:51:56