我正在研究选择排序。
我的问题是,如果你从“void sort”中删除我的所有代码,程序就会运行。一旦你把所有的代码放回去,“void sort”甚至不会进入“void sort”中的第一个“printf”函数。我不知道是什么把一切都挂了。
这里的第二个问题是这个函数应该这样做:
使用 vars 遍历数组 []:x(起点,) temp(临时最低数字)和 k(当前数字)。它应该——对于每次迭代——从 x 开始,设置 temp = x,设置 k = ( x+1) 然后 k++ 直到它到达数组的末尾。如果 array[k] 小于 array[temp] 它应该设置 temp 等于 k。然后在最后:交换 array[x] 和 array[temp] 并从 (x+1) 重新开始
当它之前工作时,我得到的唯一结果是 x = 7 (列表的末尾),它只会打印最后一个数字。:/ 做什么
此外,不需要但次要的问题,我到底如何从 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;
}