简单常用的小代码——折半查找
来源:互联网 发布:数控线切割编程软件 编辑:程序博客网 时间:2024/06/07 19:36
简单常用的小代码系列——折半查找
//代码思想
//在有序表中,把待查找数据值与查找范围的中间元素值进行比较,会有三种情况出现:
//1) 若查找数据值与中间元素值正好相等,输出中间元素的下标。
//2) 若查找数据值比中间元素值小,则以整个查找范围的前半部分作为新的查找范围,直到找到相等的值。
//3) 若查找数据值比中间元素值大,则以整个查找范围的后半部分作为新的查找范围,直到找到相等的值
//4) 如果最后找不到相等的值,则返回找不到信息。
#include<Windows.h>
#include<stdio.h>
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9,10 };
int key = 7;
int left = 0;
int right =sizeof(arr) / sizeof(arr[0]) - 1; //数组长度
while (left <= right) //一定要带“=”
{
int mid = left + (right - left) / 2;//要放在循环里边
if (arr[mid] == key)
{
printf("找到了,下标是:%d\n", mid);
break;
}
else if (arr[mid] < key)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
if (left>right)
printf("找不到\n");
system("pause");
return 0;
}
带函数的折半查找
//定义一个查找函数;
#include<Windows.h>
#include<stdio.h>
int binary_search(int arr[],int key,int sz)
{
int left = 0;
int right =sz - 1;
while (left <= right)
{
int mid = left + (right - left) / 2;
if (arr[mid] ==key)
{
return mid;
}
else if (arr[mid] <key)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
return -1;
}
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int key =7;
int left = 0;
int sz =sizeof(arr) / sizeof(arr[0]);
int ret = binary_search(arr, key, sz);
if (-1 == ret)
{
printf("找不到\n");
}
else
{
printf("找到了,下标是%d\n", ret);
}
system("pause");
return 0;
}
- 简单常用的小代码——折半查找
- 【小算法】折半查找代码
- 简单的折半查找
- 简单的折半查找
- 折半查找(二分查找)——简单说明
- 简单常用的小代码——猜数字游戏
- 简单常用的小代码——密码输入
- java实现常用的查找(线性查找,折半查找)
- 折半查找小程序
- 折半查找代码的编写和探索
- 查找——线性表的折半法查找
- 【数据结构线性表查找】——顺序查找和折半查找详解和代码
- 折半查找代码
- 折半查找代码示例
- 简单查找与折半查找
- 带---有测试代码----的二分法查找(折半查找)
- 静态查找——折半查找
- 有序表查找——折半查找
- java程序员规划
- 管道符,作业控制,shell变量,全局变量,环境变量的配置文件
- 最大公约数和最小公倍数问题
- EM算法及混合高斯模型详细推导
- 微软宣布Office 2019桌面版 2018年秋季发布公开预览版
- 简单常用的小代码——折半查找
- spring和hibernate关联使用
- gb2312编码
- 【算法与数据结构】KMP算法
- 我对前端开发的简单认识01
- codeforces-375D-树上莫队
- bzoj 4561: [JLoi2016]圆的异或并(扫描线+set)
- android ble notify
- Linux 利用yum源安装php7.0+nginx