1.插入排序
1.1直接插入排序
void DirInsetSort(int a[],int l){
for(int i=1;i<l;i++){
int tmp=a[i];
int j;
for(j=i-1;j>=0;j--){
if(tmp<a[j]){
a[j+1]=a[j];
}else
break;
}
a[j+1]=tmp;
}
// 验证输出
for(int i=0;i<l;i++)
cout<<a[i]<<" ";
}
实现原理,将待排序记录依次插入已排好的有序序列中。
时间复杂度T(n)=O(n^2);
1.2折半插入排序
void BinInsetSort(int a[],int l){
for(int i=1;i<l;i++){
int tmp=a[i];
int left=0;
int mid;
int right=i-1;
// 寻找插入位置
while(left<=right)
{
mid=(right+left)/2;
if(a[mid]>tmp)
right=mid-1;
else if(a[mid]<tmp)
left=