看起来你的代码写的有一些问题。首先,函数参数应该是一个数组,而不是一个整数,所以你的函数应该是这样定义的:
int InsertSort(int A[], int n)
另外,在循环内部对数组进行排序时,应该从数组的第一个元素开始,而不是第二个元素,所以循环应该改成这样:
最后,在插入排序算法中,需要将当前要排序的元素和已经排好序的元素依次比较,如果当前元素的值比已排序元素的值小,就将已排序元素后移一位,直到找到合适的位置。然后将当前元素插入到找到的位置。
以下是修改后的完整代码:
#include <stdio.h>
void InsertSort(int A[], int n)
{
int i, j, temp;
for(i = 1; i < n; i++)
{
temp = A[i];
j = i - 1;
while(j >= 0 && A[j] > temp)
{
A[j+1] = A[j];
j--;
}
A[j+1] = temp;
}
}
int main()
{
int A[] = {5, 2, 4, 6, 1, 3};
int n = sizeof(A) / sizeof(A[0]);
InsertSort(A, n);
for(int i = 0; i < n; i++)
{
printf("%d ", A[i]);
}
return 0;
}
这个代码会将数组中的元素按从小到大的顺序排序,并打印出来。希望对你有帮助!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |