|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
#include<math.h>
int InsertSort(int A[],int n)
{
int i,j;
for(i=2; i<=n; i++)
{
if(A[i]<A[i-1])
{
A[0]=A[i];
for(j=i-1;A[0]<A[j];--j)
A[j+1]=A[j];
}
A[j+1]=A[0];
}
printf("%d\n",A[i]);
return 0;
}
int main()
{
int n=20;
int A[20]={2,1,23,12,10,3,4,56,45,100,21,13,14};
int InsertSort(int A[20],int n);
return 0;
}
看起来你的代码写的有一些问题。首先,函数参数应该是一个数组,而不是一个整数,所以你的函数应该是这样定义的:
- 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 小助理,如未能正确解答您的问题,请继续追问。
|
|