#include<iostream>
#include<stdlib.h>
using namespace std;
// 直接插入排序(改进的折半查找版本)函数
int ZheCHa(int A[], int n) {
int low, high, temp, mid;
// 从第二个元素开始遍历数组
for (int i = 1; i < n; i++) {
low = 0;
high = i - 1;
temp = A[i];
// 使用折半查找确定插入位置
while (high >= low) {
mid = (low + high) / 2;
if (A[mid] == temp) {
low = mid + 1;
break;
}
if (A[mid] > temp) high = mid - 1;
else low = mid + 1;
}
// 移动元素为插入腾出空间
for (int m = i - 1; m >= low; m--) {
A[m + 1] = A[m];
}
// 插入元素
A[low] = temp;
}
}
int main() {
// 定义测试数组
int A[] = {4, 5, 3, 5, 6, 8};
int n = 6;
// 调用排序函数
ZheCHa(A, n);
// 输出排序后的数组
for (int i = 0; i < n; i++) {
cout << A[i] << " ";
}
return 0;
}