插入排序(输出最小值)
发布网友
发布时间:2024-05-03 06:22
我来回答
共1个回答
热心网友
时间:2024-05-04 06:09
1)数组越界,a[0]=a[i+1];当i==3时,a[4]可用否?
2)插入排序的算法是:从第二个位置开始起,与前面已经排好序的数据比较,并判断是否需要移动位置。
3)修正后的代码,参考一下
#include "time.h"
#define N 10
void InitArray(int a[])
{
srand((unsigned)time(0));
for (int i=0; i<N; i++)
{
a[i] = rand()%100;
}
}
void PrintArray(int a[], int n)
{
printf("\n");
for (int i=0; i<n ; i++)
{
printf("%d ",a[i]);
}
}
void InsertSort(int a[])
{
int i=0,j=0, index=0;
int temp=0;
int n=N;
for (i=1; i<n; i++)
{
temp = a[i];
index = i;
for (j=i-1; j>=0; j--)
{
if (temp < a[j])
{
a[index] = a[j];
index--;
}
}
a[index] = temp;
}
}
int main()
{
int a[N]={0};
InitArray(a);
PrintArray(a,N);
InsertSort(a);
PrintArray(a,N);
return 0;
}