使用c++做出折半插入排序
时间: 2024-01-13 11:02:39 浏览: 77
C++实现折半插入排序(BinaryInsertSort)
5星 · 资源好评率100%
以下是使用C++实现折半插入排序的代码和解释:
```cpp
void binaryInsertSort(int arr[], int len) {
int front, end, temp;
for (int i = 1; i < len; i++) {
temp = arr[i];
front = 0;
end = i - 1;
while (front <= end) {
int mid;
mid = (front + end) / 2;
if (temp < arr[mid]) {
end = mid - 1;
} else {
front = mid + 1;
}
}
for (int z = i; z > front; z--) {
arr[z] = arr[z - 1];
}
arr[front] = temp;
}
}
```
折半插入排序是一种插入排序的变种,它通过二分查找的方式来减少比较的次数。具体实现过程如下:
1. 从第二个元素开始,将当前元素存储在一个临时变量temp中。
2. 用二分查找的方式在前面已经排好序的子数组中找到temp应该插入的位置,即找到第一个比temp大的元素的位置。
3. 将从i-1到front的元素都向后移动一位,空出front的位置。
4. 将temp插入到front的位置。
阅读全文