C ++中的二进制插入排序

二进制插入排序是插入排序的一种特殊类型,它使用二进制搜索算法找出插入的元素在数组中的正确位置。

插入排序是一种排序技术,其工作原理是找到元素在数组中的正确位置,然后将其插入到正确的位置。

二进制搜索是一种搜索技术,它通过找到数组的中间以找到元素来工作。

由于二进制搜索的复杂度为对数级,因此搜索算法的时间复杂度也将降低为对数级。

实现二进制插入排序。该程序是一个简单的插入排序程序,但不是使用标准搜索技术,而是使用二进制搜索。

示例

#include <iostream>

using namespace std;

int binarySearch(int arr[], int item, int low, int high) {

   if (high <= low)

      return (item > arr[low])? (low + 1): low;

      int mid = (low + high)/2;

   if(item == arr[mid])

      return mid+1;

   if(item > arr[mid])

      return binarySearch(arr, item, mid+1, high);

      return binarySearch(arr, item, low, mid-1);

}

void BinaryInsertionSort(int arr[], int n) {

   int i, loc, j, k, selected;

   for (i = 1; i < n; ++i) {

      j = i - 1;

      selected = arr[i];

      loc = binarySearch(arr, selected, 0, j);

      while (j >= loc) {

         arr[j+1] = arr[j];

         j--;

      }

      arr[j+1] = selected;

   }

}

int main() {

   int arr[] = {12, 56, 1, 67, 45, 8, 82, 16, 63, 23};

   int n = sizeof(arr)/sizeof(arr[0]), i;

   BinaryInsertionSort(arr, n);

      cout<<"Sorted array is : \n";

   for (i = 0; i < n; i++)

      cout<<arr[i]<<"\t";

   return 0;

}

输出结果

Sorted array is :

1 8 12 16 23 45 56 63 67 82

以上是 C ++中的二进制插入排序 的全部内容, 来源链接: utcz.com/z/327298.html

回到顶部