二分插入排序的基本思想是:利用二分搜索算法,在已有序序列中查找元素插入位置,将元素插入这个位置,这个位置后面的元素依次后移。
// // BinaryInsertSort.c // libin // // Created by 李宾 on 16/4/28. // Copyright © 2016年 李宾. All rights reserved. // #include <stdio.h> void BinaryInsertSort(int *p, int len) { for (int i = 1; i < len; i ++) { if(p[i] > p[i-1]) { continue; } int low = 0; int high = i - 1; int mid = 0; int temp = p[i]; while (low <= high) { mid = (low + high)/2; if (temp < p[mid]) { high = mid - 1; } else low = mid + 1; //low的位置就是插入的位置 } //low到i的元素都要后移 for(int j = i - 1; j >= low; j --) { p[j+1] = p[j]; } p[low] = temp; } } int main() { int a[6] = { 4, 1, 3, 15, 6, 40}; BinaryInsertSort(a, 6); for (int i = 0; i < 6; i ++) { printf("%d ", a[i]); } printf(" "); }