插入排序
插入排序通过遍历整个数组的数,每次取出一个数与前面的数进行比较,如果该数比前面的数小,则把该数插入到前面数的位置,相应的前面的数要后移以为。这样一直循环比较下去,知道该数不必前面的数小。
#include <iostream>
using namespace std;
insertSort(int arr[],int length){
int i,j;
int key;
for(j=1;j<length;j++){ // 从第二个数开始遍历整个数组
key=arr[j]; // 记录 j 处的值
i=j-1;
while(i>=0&&arr[i]>key){ // 需要在i处插入 key
arr[i+1]=arr[i]; // 将arr的值后移
i--;
}
arr[i+1]=key;
}
}
int main()
{
int arr[6]={5,2,4,6,1,3};
int i;
insertSort(arr,sizeof(arr)/sizeof(arr[0]));
for(i=0;i<6;i++){
cout<<arr[i]<<" ";
}
cout<<endl;
return 0;
}
插入排序的时间复杂度:
最好情况:即是一排好序的一个数组,时间复杂度为O(n)
最差情况:O(n²)
平均情况:O(n²)
插入排序的时间复杂度有点高,接下来我们将会介绍归并排序。