折半插入排序


折半插入的本質上,依舊是插入排序,只是在尋找插入點的時候將使用折半查找,用以減少查找數據的次數。

數組的第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];

}
}

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: