void binaryInsertionSort(Book books[], int count) { int i, j, left, right, mid; Book tmp; for (i = 1; i < count; i++) { tmp = books[i]; left = 0; right = i - 1; while (left <= right) { mid = (left + right) / 2; if (books[mid].price > tmp.price) { right = mid - 1; } else { left = mid + 1; } } for (j = i - 1; j >= left; j--) { books[j + 1] = books[j]; } books[left] = tmp; } }
时间: 2024-02-14 14:20:33 浏览: 51
InsertionSort
这段代码实现了二分插入排序算法,它的时间复杂度为O(N^2),但是与普通的插入排序相比,它的常数因子要小,因此在实际应用中可能会比普通插入排序更快。该算法的思想是,将待排序序列分为已排序和未排序两部分,每次从未排序的部分中取出一个元素,通过二分查找的方式找到它在已排序部分中的位置,然后将它插入到合适的位置上。
阅读全文