折半插入排序

来源:互联网 发布:note express for mac 编辑:程序博客网 时间:2024/06/15 22:57

折半插入的本质上,依旧是插入排序,只是在寻找插入点的时候将使用折半查找,用以减少查找数据的次数。

数组的第0个元素不在排序序列中,用来保存将要插入的数据。

这里写图片描述

//折半直接插入排序void BinsrySort(int *a, int length){    //第0号元素不使用    for (int i = 1; i < length; i++)    {        a[0] = a[i];        int j = i - 1;        int low = 1;        int high = i - 1;        int mid = (low + high) / 2;        while (low<=high)//         {            if (a[mid] >= a[0])//稳定版            {                high = mid - 1;            }            else            {                low = mid + 1;            }            mid = (high+low)/2;        }        //low 做为标准        for (j = i - 1; j >= low; j--)        {            a[j + 1] = a[j];        }        a[low] = a[0];    }}
原创粉丝点击