//直接插入排序是一种简单的排序方法,其基本思想是将第一个元素看成是有序的子序列,再依次从第二个记录起逐个的插入这个有序的子序列中;
//时间复杂度为0(n2);
#include <stdio.h>
#include <stdlib.h>
void insertsort(int arrays[],int number);
int main()
{
int count=0;
int i;
printf("please input the number of the data you want to sort:\n");
scanf("%d",&count);
int array[count];
printf("please input the number:\n");
for( i=0;i<count;i++)
scanf("%d",&array[i]);
printf("before the sort:\n");
for( i=0;i<count;i++)
printf("%d ",array[i]);
printf("\n");
insertsort(array,count);
printf("after the sort:\n");
for( i=0;i<count;i++)
printf("%d ",array[i]);
printf("\n");
return 0;
}
void insertsort(int arrays[],int number)
{
int i,j;
for( i=1;i<number;i++)
{
int temp=arrays[i];
for( j=i-1; j>=0 && temp<arrays[j];j--)
arrays[j+1]=arrays[j];
arrays[j+1]=temp;
}
}
#include <iostream>
using namespace std;
int main()
{
int number;
cout<<"请输入你的数据的个数:"<<endl;
cin>>number;
int a[number];
cout<<"请输入你的数据:"<<endl;
for(int i=0;i<number;i++)
{
cin>>a[i];
}
cout<<"请确认你的数据:"<<endl;
for(int i=0;i<number;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
cout<<endl;
for(int i=1;i<=number;i++)
{
int e=a[i];
int j;
for( j=i-1;j>=0&&e<a[j];j--)
{
a[j+1]=a[j];
}
a[j+1]=e;
for(int i=0;i<number;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
cout<<endl;
}
cout<<"经过直接插入排序后的顺序是:"<<endl;
for(int j=0;j<number;j++)
{
cout<<a[j]<<" ";
}
}