基本思想:
当插入第 i 个对象时,前面的 R [1],…, R[i-1]已经排好序, 此时用R[i]的关键字与R[i-1], R[i-2], … 的关键字顺序进行比较,
找到插入位置即将R[i]插入, 原来位置上对象向后顺移。
#include<stdio.h>
void Swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
void Insertsort2(int a[], int n)
{
int i, j;
for (i = 1; i < n; i++)
{
for (j = i - 1; j >= 0 && a[j] > a[j + 1]; j--)
{
Swap(a[j], a[j + 1]);
}
}
}
void Insertsort1(int a[], int n)
{
int i, j;
int m;
for(i=1; i<n; i++)
{
m=a[i];
j=i-1;
while(m < a[j] && j>=0)
{
a[j+1]=a[j--];
}
a[j+1]=m;
}
}
int main()
{
int a[10];
for(int i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
Insertsort1(a, 10);
// Insertsort2(a, 10);
for(int i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}