直接插入排序

来源:互联网 发布:每周eia数据时间 编辑:程序博客网 时间:2024/06/07 12:57

    直接插入排序时间复杂度为O(n^2),空间复杂度为O(1),是一种稳定的排序方法。当序列中的记录基本有序或待排序记录较少时,直接插入排序是最佳的排序方法。但当待排序的记录个数较少时,大量的比较和移动操作是直接插入排序算法的效率降低。

    基本思想:把记录分为有序区和无序区,开始时有序区为a[0],无序区为a[1,2,3...n-1],然后无序区里的记录依次插入到有序区。

//直接插入排序#include<iostream>using namespace std;void DirectInsertSort(int a[],int n){     int i;      for (i = 1; i <n; i++)   //无序区{if(a[i]<a[i-1]){//亮点,先于有序区的最大值比较,如果大于此值,此次循环不需要做插入操作,避免不必要的比较int temp=a[i];//temp作为待插入记录的暂存单元和查找记录的插入位置过程中的“哨兵”for(int j=i-1;temp<a[j];j--) a[j+1]=a[j];a[j+1]=temp;}}}  void main(){int a[6]={2,9,1,6,3,8};DirectInsertSort(a,6);for(int i=0;i<6;i++)cout<<a[i]<<" ";cout<<endl;}


运行结果如下:

0 0
原创粉丝点击