当前位置: 首页 > news >正文

c语言折半查找输出坐标,C语言折半查找

9037078a0e92b7473dd0781ac70760d7.png

/*************************************************************************

> File Name: bin_search.c

> Author:heathcliff

> Mail:---------------------

> Created Time: 2016年04月05日 星期二 18时12分46秒

************************************************************************/

#include

#define M 5

/*折半查找法*/

int bin_search(int A[],int n,int key)

{

int low,high,mid;

low = 0;

high = n-1;

while(low <= high){

mid = (low + high)/2;

if(A[mid] == key)

return mid;

else if(A[mid] < key)

low = mid + 1;

else

high = mid - 1;

}

/*查找失败*/

return -1;

}

/*直接插入排序*/

int insert_sort(int A[],int n)

{

int i,j,temp; //temp 保存中间值

for(i = 1;i < n; i++){

temp = A[i];

j = i - 1;

while(j >= 0 && temp < A[j]){ //找到插入位置

A[j+1] = A[j];

j -- ;//j向后移动

}

A[j+1] = temp; //插入temp处的值

}

}

int main(void)

{

int A[M];

int i;

int n , m;

printf("请输入数组的值:");

for(i = 0;i < M;i++)

scanf("%d",&A[i]);

printf("\n你输入的值为:");

for(i = 0;i < M;i++)

printf("[%d]",A[i]);

printf("\n");

insert_sort(A,M);

for(i = 0;i < M;i++)

printf("[%d]",A[i]);

printf("\n");

printf("请输入你要查找的值:\n");

scanf("%d",&n);

m = bin_search(A , M , n);

if(-1 != m){

printf("排序后,你查找的值在数组的第%d 的位置\n",m);

}

else

printf("查找失败\n");

return 0;

}

分析:

输入的值为:10,5,9,8,7

1. 排序

首先 i = 1;temp = A[i] = 5;

j = i -1 = 0;

判断j>= 0 && temp < A[0] = 10 ?,判断成立

A[1] = A[0] = 10;//值交换

j = -1;

判断 j> = 0 判断不成立

A[1] = 5;

如此一来:输入的值变为了5,10,9,8,7

第二轮:i = 2; temp = A[2] = 9;

j = i - 1 = 1;

判断 j>=0 && temp

A[2] = A[1] = 10;//交换值

j = 0;

判断 j>= 0&& temp < A[0] ?判断不成立

A[1] = temp = 9;

这么一搞:输入值就又变成了:5,9,10,8,7

以此类推,即可将输入数组有序排列为 5,7,8,910

2. 折半查找

假设要找的值为7 , 即key = 7

low = 0;

high = 4;

mid = 2;

A[2] = 8 > key ;

high = mid - 1 = 1;

mid = 0;

A[0] = 5 < 7;

low = mid + 1 = 1;

mid = 1;

A[mid] = key;

找到7的位置

相关文章:

  • c语言编程规范检查clang,使用Xcode开发iOS语法检查的Clang插件
  • 计算机二级c语言2013,2013年计算机二级C语言模拟试题三及答案
  • 索引存储 c语言,C语言索引操作
  • c语言基础模板,C语言基础(一)
  • 职工管理单链表系统c 语言,C语言课程设计职工信息管理系统单链表实现程序源代码.doc...
  • c语言读取bmp 文件的数据结构,BMP格式文件的数据结构
  • c语言实训的总目的意义,C语言实训总结
  • qt建立c语言工程文件,创建第一个qtcreator项目并确定文件和目录的作用
  • linux sed举例,linux sed 常用用法举例01
  • android机制分析,Android消息机制分析
  • android ndk网络请求,Android NDK 开发之 HTTP 请求的问题及解决
  • 手机如何换鸿蒙os,手机知识:怎么换鸿蒙系统
  • 鸿蒙符助战选哪个,航海王燃烧意志最强助阵选择 助战哪个厉害[多图]
  • android7.0启动相册,Android7.0 使用系统相册打开指定图片
  • 鸿蒙2.0版操作系统,鸿蒙2.0操作系统
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • iOS编译提示和导航提示
  • java取消线程实例
  • ng6--错误信息小结(持续更新)
  • Python_OOP
  • springboot_database项目介绍
  • Swift 中的尾递归和蹦床
  • vuex 学习笔记 01
  • XForms - 更强大的Form
  • Yii源码解读-服务定位器(Service Locator)
  • 程序员该如何有效的找工作?
  • 浮动相关
  • 工作手记之html2canvas使用概述
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 数据科学 第 3 章 11 字符串处理
  • 小程序01:wepy框架整合iview webapp UI
  • raise 与 raise ... from 的区别
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # Panda3d 碰撞检测系统介绍
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (12)Hive调优——count distinct去重优化
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net访问oracle数据库性能问题
  • 。Net下Windows服务程序开发疑惑
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [Everyday Mathematics]20150130
  • [linux]资料收纳
  • [nlp] id2str的vocab.json转换为str2id