排序--直接插入排序

时间:2022-12-18 11:10:45
//.........................直接插入排序
/*
直接插入排序的运行时间和待排序元素的原始排列顺序密切相关,
直接插入排序的时间复杂度为O(n^2),
直接插入排序是一种稳定的排序算法。
在元素的初始排列已经按排序码排好序或接近有序时,直接插入排序速度最快。
*/

#if 0
#include<iostream>
using namespace std;
#define N 10
void InsertSort(int a[],int left,int right)
{
int i,j;
int temp;
for(i =left+1;i<=right;i++) //i从1开始循环
if(a[i]<a[i-1]) //和前一个元素比较大小 大的话符合条件,i++
{
temp = a[i]; //记住要插入的元素
j = i-1;
do
{
a[j+1] = a[j];
j--;
}while(j>=left&&temp<a[j]); //将比temp大的元素依次向后移动
a[j+1] = temp; //将元素插入到指定位置
}
}

int main()
{
int a[N] ;
int i;
for(i = 0;i<N;i++)
cin>>a[i];
InsertSort(a,0,N-1); //插入排序

for(i = 0;i<N;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
#endif