今天无聊时看到oiwiki上的折半插入排序
void insert_sort(int a[], int n) {
if (n < 2) return;
for (int i = 1; i != n; ++i) {
int tmp = a[i];
auto index = upper_bound(a, a + i, tmp) - a;
memmove(a + index + 1, a + index, (i - index) * sizeof(int));
a[index] = tmp;
}
}
这个upper_bound和memmove放这里是怎么实现排序的看不懂,哪位大佬给讲一下%%%