一、概念
二、代碼
#include <stdio.h>
int inserValue(int nums[],int length ,int key);
int main()
{
// 現在有一個有序的數組, 要求給定一個數,將該數字插入到數組中,還要保證數組是有序的
// 其實就是找到插入需要插入的數字的位置
// 其實這個位置就是min的位置
/*
min = 0
max = 4
mid = 2
*/
// 0,1,2,3,4
int nums[5] = {1,3,5,7,9};
int key = 4;
int length = sizeof(nums) / sizeof(nums[0]);
printf("需要插入的位置是%i,\n",inserValue(nums,length,key));
return 0;
}
int inserValue(int nums[],int length ,int key)
{
int min,max,mid;
min = 0; // 1
max = length -1; // 4 1
while (min <= max) {
mid = (min + max) / 2; // 2 0 1
if (key > nums[mid]) {
min = mid + 1;
}
else if (key < nums[mid])
{
max = mid - 1;
}
else
{
return mid;
}
}
//
// return -1;
return min;
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。