C++数据结构编写折半插入排序算法并编程实现
时间: 2023-08-02 22:45:16 浏览: 122
折半插入排序的算法实现
折半插入排序是一种优化的插入排序算法,它可以减少比较和移动的次数,从而提高排序的效率。具体实现如下:
```c++
#include <iostream>
using namespace std;
void binaryInsertSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int left = 0, right = i - 1, mid;
int temp = arr[i];
while (left <= right) {
mid = (left + right) / 2;
if (temp < arr[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
for (int j = i - 1; j >= left; j--) {
arr[j + 1] = arr[j];
}
arr[left] = temp;
}
}
int main() {
int arr[] = {5, 2, 8, 3, 9, 6, 1, 7, 4};
int n = sizeof(arr) / sizeof(arr[0]);
binaryInsertSort(arr, n);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
在这个实现中,我们首先遍历整个数组,对于每个元素,我们使用二分查找找到它应该插入的位置。然后,我们将它之前的所有元素向后移动一个位置,最后将该元素插入到正确的位置。这个过程一直进行到整个数组有序。
阅读全文