我是C的新手,我们应该制作一个插入排序的程序。以下是我的代码:
int InsertionSort(int array[], int len)
{
unsigned int i;
unsigned int j;
unsigned int k;
int temp;
for (i = 1; i < len; i++)
{
j = i;
while (j > 0 && array[i] < array[j-1])
{
temp = array[j-1];
array[j-1] = array[i];
array[i] = temp;
j--;
}
}
for (k = 0; k < len; k++)
printf("The list at: %d\n", array[k]);
return *array;
}
int main()
{
int array[10] = {82, 50, 12, 68, 17, 95, 35, 23};
int len = 8;
//SelectionSort(array, len);
InsertionSort(array, len);
}
排序列表应该如下所示:
[12, 17, 23, 35, 50, 68, 82, 95]
但是,当我打印出来时,我的列表看起来像这样:
[50, 12, 68, 17, 82, 35, 23, 95]
我尝试用铅笔在纸上继续我的程序,似乎没问题,但我想它不起作用......所以我想知道是否有人可以帮助指出我的代码出错了?提前致谢!
答案 0 :(得分:0)
更改这些代码行
while (j > 0 && array[i] < array[j-1])
{
temp = array[j-1];
array[j-1] = array[i];
array[i] = temp;
j--;
}
到
while (j > 0 && array[j - 1] > array[j])
{
temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
j--;
}