二分查找算法举例说明C语言,C语言快速排序与二分查找算法示例

本文实例讲述了C语言二分排序与查找算法。分享给大家供大家参考,具体如下:

题目:首先产生随机数,再进行快速排序,再进行二分查找。

实现代码:

#include

#include

#include

void quiksort(int a[],int low,int high)

{

int i = low;

int j = high;

int temp = a[i];

if( low < high)

{

while(i < j)

{

while((a[j] >= temp) && (i < j))

{

j--;

}

a[i] = a[j];

while((a[i] <= temp) && (i < j))

{

i++;

}

a[j]= a[i];

}

a[i] = temp;

quiksort(a,low,i-1);

quiksort(a,j+1,high);

}

else

{

return;

}

}

int search(int x, int v[], int n){

int low, high, mid;

low = 0;

high = n - 1;

while ( low <= high ) {

mid = (low + high) / 2;

if(x < v[mid]){

high = mid - 1;

}

else if(x > v[mid]){

low = mid + 1;

}

else{

return mid;

}

}

return -1;

}

int main(){

int arry[100] ;

int i,j;

srand((unsigned)time(NULL)); //产生不同的随机数

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

{

j = rand()%100;

//if(i%2==0) //产生负数

//j =-j;

arry[i]=j;

}

int location;

int number ;

quiksort(arry,0,99);//随机数先进行排序

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

{

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

}

printf("\n");

printf("请输入你要查找的数字");

scanf("%d",&number);

location = search(number, arry, 100);

printf("%d\n", location);

return 0;

}

心得与体会:

二分查找比较容易理解,就是折半查找法,所以要求数据必须是有序数列。不断比较中间值。

快速排序是应用了递归,首先确定一个关键数据,再把比他大的放到后面,比他小的放到前面,再分别对这两部分进行同样的操作。

希望本文所述对大家C语言程序设计有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gradle跟pom_Gradle多项目构建–父pom式结构

gradle跟pom当您来自Maven背景时&#xff0c;很可能已经习惯了父pom结构。 现在&#xff0c;在进行gradle时&#xff0c;情况有所不同。 想象一下有一个包含接口和各种其他实现的项目的场景。 这将是我们的项目结构。 multi-project-gradle -- specification -- core -- i…

java streams_使用Stream.peek在Java Streams内部进行窥视

java streams对于刚接触JDK 8的管道和流的Java开发人员而言&#xff0c; Stream接口提供的peek&#xff08;Consumer&#xff09;方法可以是有用的工具&#xff0c;有助于可视化流操作的行为。 即使是更熟悉Java流和聚合操作的Java开发人员&#xff0c;有时也会发现Stream.peek…

算法提高 日期计算c语言,算法提高 日期计算

//规定年份2017年1月1日 星期7#includeusing namespace std;int rn(int n) //判断是否是润年{if (n%40 && n%100!0 || n%4000)return 1;return 0;}int md[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};int main(){int year,month,day;int i,sum0,td0;while (cin>>…

IntelliJ IDEA for Mac 模块源文件的编译输出路径配置

按下组合键 Command ; 打开【项目结构】窗口&#xff0c;接着在左侧菜单栏中选择【Modules】&#xff0c;接着在右侧模块列表中选择要设置的模块&#xff0c;接着选择右侧的【Paths】标签&#xff0c;如下图所示&#xff1a; 不知道搞个【test ouput path】的好处在哪里&…

IntelliJ IDEA for Mac 如何在当前的普通Java项目中创建新的模块/添加模块/创建模块

文章目录添加模块的入口创建新的项目模块添加模块的入口 添加新的模块的入口有两个&#xff0c;如下图所示&#xff1a; 第一种方式&#xff0c;【File】 --> 【New】 --> 【Module】&#xff1a; 第二种方式&#xff0c;打开【Project Structure】窗口&#xff0c;然后…

react api_使用Java EE 8中的React式API加速服务

react api服务通常可以通过异步处理进行优化&#xff0c;即使不改变其对外界的行为。 某些服务效率不高的原因是&#xff0c;它们需要等待其他服务提供结果才能继续下去。 让我们看一下如何在不等待外部REST服务的情况下调用它们&#xff0c;并独立进行多个并行调用&#xff…

android申请权限一次性申请多个,android 6.0以上动态一次申请多个权限-最美解决方案...

目录背景危险权限申请权限思路申请权限流程干货后续一.背景android23 API新增危险权限校验&#xff0c;需要手动获取&#xff1a;二.危险权限&#xff1a;日历数据android.permission-group.CALENDARandroid.permission.READ_CALENDARandroid.permission.WRITE_CALENDAR相机and…

IntelliJ IDEA for Mac 直接将模块硬盘上的根目录删除会怎么样

不通过 IDEA 删除模块文件&#xff0c;而是直接手动从硬盘删除模块文件&#xff0c;造成的结果如下图所示&#xff1a; 【模块内容导航窗格】的内容是根据以下两个配置文件的信息从硬盘中加载进来的&#xff1a; 项目根目录/.idea/modules.xml 这个文件记载了配置文件【模块名…

java 谓词_谓词::不适合Java

java 谓词Jim Laskey在OpenJDK core-libs-dev邮件列表上最近的消息“ RFR&#xff1a;CSR – JDK-8203428 Predicate :: not ”指出了JDK Bug JDK-8203428 [“ Predicate :: not”]。 JDK-8203428的“摘要”指出&#xff1a;“引入新的静态方法Predicate :: not&#xff0c;这将…

android root权限函数,android 4.4下app永久获取root权限的方法

本帖最后由 jackson 于 2017-4-16 20:55 编辑通过参照[FAQ11414]android KK 4.4 版本后&#xff0c;user 版本su 权限严重被限制问题说明http://www.voidcn.com/blog/wds1181977/article/p-6157006.html明确要修改三个地方&#xff1a;(1)把dalvik/vm/native/dalvik_system_Zyg…

IntelliJ IDEA 项目开发中各个目录的关系

项目根目录&#xff08;Project Root&#xff09;&#xff1a;本地硬盘中存放项目内容的根目录 项目名称&#xff08;Project Name&#xff09;&#xff1a;IDEA 保存的项目名称&#xff0c;默认和项目根目录的名称相同&#xff0c;可以修改。有啥作用&#xff1f;通过 IDEA 部…

apache spark_Apache Spark中的自定义日志

apache spark您是否曾经对运行了几个小时的Spark作业感到沮丧&#xff0c;但由于基础设施问题而失败了。 您会很晚才知道此故障&#xff0c;并浪费了数小时的时间&#xff0c;当Spark UI日志也无法进行事后检查时&#xff0c;它会更加痛苦。 你不是一个人&#xff01; 在本文…

android中暂停服务,Android 装逼技术之暗码启动应用

前言喜欢的小伙伴欢迎关注&#xff0c;我会定期分享Android知识点及解析&#xff0c;还会不断更新的BATJ面试专题&#xff0c;欢迎大家前来探讨交流&#xff0c;如有好的文章也欢迎投稿。什么是暗码&#xff1f;在拨号盘中输入*#*##*#*后&#xff0c;APP 可以监控到这些输入&am…

JShell 详解

文章目录一、简介二、为什么使用 JShell三、参考示例启动 JShell退出 JShell声明定义基本类型的变量声明定义一个方法覆盖已存在的变量、方法、类的定义查看 JShell 默认导入的包自动补全功能列出所有键入的源列出已声明方法及其签名加载外部的源代码查看 JShell 提供的所有指令…

graphql_GraphQL在Wildfly群上

graphql“ GraphQL是API的查询语言&#xff0c;是用于使用现有数据完成这些查询的运行时。 GraphQL为您的API中的数据提供了完整且易于理解的描述&#xff0c;使客户能够准确地询问他们所需的内容&#xff0c;仅此而已&#xff0c;使随着时间的推移更容易开发API并启用强大的开…

android中有哪些utils的作用,AndroidUtils

多年开发Android积攒下来好多常用的工具方法&#xff0c;保存在随笔中&#xff0c;持续更新。TimeUtil/*** 获取距当前时刻的时间戳** param createTime* return*/public static String getTimestamp(long createTime) {long currrentMillis System.currentTimeMillis();// if…

Java中的关键字this_super

文章目录要点错误的理解正确的理解演示代码要点 1.在类的构造器中&#xff0c;可以使用 this() 调用本类的其它构造器&#xff0c;调用的时候根据构造器声明的参数列表传递参数值 2.super() 调用父类的无参构造器 3.super.method() 调用父类的 method() 方法 4.super.name …

Spring Hibernate教程

1.简介 在本文中&#xff0c;我们将演示如何利用最流行的ORM&#xff08;对象关系映射&#xff09;工具之一的Hibernate的功能 &#xff0c;该工具可将面向对象的域模型转换为传统的关系数据库。 Hibernate是目前最流行的Java框架之一。 由于这个原因&#xff0c;我们在Java Co…

百度地图瓦片 android,百度地图自定义瓦片图获取

nodejs代码const request require(request);const fs require(fs);const bagpipe require(bagpipe);const TileLnglatTransform require(tile-lnglat-transform);let [x1, y1] [72.26, 54.57]; // 起始点坐标(左上角)let [x2, y2] [137.31, 17.8]; // 终点坐标(右下角)le…

IntelliJ IDEA for Mac 如何自定义快捷键_设置快捷键

文章目录设置代码补全快捷键设置展开全部的快捷键折叠全部快捷键设置代码补全快捷键 代码自动补全&#xff0c;即智能提示。 打开【系统偏好设置】如下图所示&#xff1a; 在左侧的菜单栏中找到 Keymap → Main Menu → Code → Code Completion → Basic&#xff1a; 设…