折半查找以及插入

来源:互联网 发布:帝国cms绑定域名 编辑:程序博客网 时间:2024/06/16 01:55
//折半查找int half_find(int* p, //数组  int n, //长度  int d)//数据{int b = 0, e = n - 1;while (b <= e){int h = (b + e) / 2;if (d < p[h])e = h - 1;else if (d > p[h])b = h + 1;else return h;}return -1;}//折半插入bool half_insert(int* p, //数组 int n, //长度 int d)//数据{int b = 0, e = n - 1;while (b <= e){int h = (b + e) / 2;if (d < p[h])e = h - 1;else if (d > p[h])b = h + 1;else return false;}if (b >= e){//当折半查找跳出的时候,begin位置就应该//是插入新数据的位置//得到当前应该移动的次数int m = n - b;for (int i = 0; i < m; ++i)p[n - i] = p[n - 1 - i];p[b] = d;}return true;}