二分插入排序 #Algorithm
typedef struct ElemType {
char data[16];
int key;
} ElemType;
void BinaryInsertSort(ElemType A[], int n) {
int i, j, high, mid, low;
for (i = 2; i <= n; i++) {
if (A[i].key < A[i - 1].key) {
A[0] = A[i];
low = 1;
high = i - 1;
while (low <= high) {
mid = (low + high) / 2;
if (A[mid].key > A[i].key) { high = mid - 1; }
else { low = mid + 1; }
}
for (j = i - 1; j >= high + 1; j--) {
A[j + 1] = A[j];
}
A[high + 1] = A[0];
}
}
}