插入排序是一种简单直观的排序,其基本思想在于每一次将一个待排序的记录,按照其关键字大小插入到前面已经排好序的子序列中,直到全部记录全部插入完成。
时间复杂度O(n2), 空间复杂度O(1);
插入排序是一种稳定的算法。
#include<iostream>
using namespace std;
//插入排序
void InsertSort(int *num, int len){
int i,j;
for(i=1; i<len; i++){//依次将num1-(n-1)插入到前面已经排序好的队列中
if(num[i]<num[i-1]){//若当前的数据小于前去,插入到前面的排序中
int temp=num[i]; //复制为哨兵
for(j=i-1;num[j]>temp&&j>=0;j--)//从后往前找待插入位置
num[j+1]=num[j]; //向后挪位
num[j+1]=temp;//复制到插入位置
}
}
}
int main(){
int num[10]={3,2,9,6,1,6,4,9,1,9};
InsertSort(num,10);
cout<<"插入排序的结果"<<endl;
for(int i=0; i<10; i++)
cout<<num[i]<<" ";
cout<<endl;
return 0;
}