#pragma mark 折半查找练习 ###pragma mark 概念
###pragma mark 代码
#include <stdio.h>
insertValue(int number[], int length,int key);
int main()
{
// 现有一个有序的数组,要求给定一个数字,将该数字插入到数组中,还要保证数组是有序的
// 其实就是找到需要插入数字的位置
// 其实这个位置就是min的位置
/*
min = 0; == mid + 1 == 3 == 3 + 1 == 4
max = 4; == mid - 1 == 3
mid = 2; == 7/2 = 3 == 4
*/
// 2
// 3
// 4
int nums[5] = {1,3,5,7,9};
int key = 4;
int length = sizeof(nums)/sizeof(nums[0]);
printf("需要插入的位置%i\n",insertValue(nums,length,key));
return 0;
}
int insertValue(int number[], int length,int key)
{
// 插入的位置
int min, max , mid;
min = 0;
max = length -1;
while (min <= max) {
mid = (min + max) / 2; // 中间值
if (key > number[mid]) {
// 对比的值 大于 中间值
min = mid + 1;
}
else if (key < number[mid])
{
// 对比的值 小于 中间值
max = mid - 1;
}
}
return min;
}