Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การเรียงลำดับแบบไบนารีใน 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