理论原理:
代码实现:
#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;
#define MAX 100000;
//插入排序 无序序列插入有序序列当中
//在基本有序,数据量较少的情况下排序效率很高
void Insert_Sort(int *arr,int length)
{
for(int i=1;i<length;i++)
{
int temp=arr[i];
int j;
//当i位置元素temp比j位置元素小时,移动覆盖
for(j=i-1;j>=0 && temp<arr[j];j--)
{
arr[j+1]=arr[j];
}
arr[j+1]=temp;
}
}
void printArr(int *arr,int length)
{
for(int i=0;i<length;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
}
int main()
{
int max=MAX;
srand(time(NULL));
int arr[max];
for(int i=0;i<max;i++)
{
arr[i]=rand()%max;
}
//获取系统时间
DWORD time_start,time_end;
time_start=GetTickCount();
// printArr(arr,max);
Insert_Sort(arr,max);
// printArr(arr,max);
time_end=GetTickCount();
cout<<"插入排序"<<max<<"个数所需时间为"<<(time_end-time_start)<<endl;
return 0;
}
运行结果: