您的位置:首页 > 其它

直接插入排序

2014-06-27 20:50 204 查看
基本思想:
当插入第 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: