cxfans
9/8/2019 - 1:36 AM

二分插入排序 #Algorithm

二分插入排序 #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];
        }
    }
}