C程序设计语言练习 第三章
3.3 else-if语句
折半查找,这里通过一个折半查找说明三路判定程序的用法。该函数用于判定已排序好的数组v中是否存在某个特定的值。数组v的元素必须以升序排列。如果v中包含x,则该函数返回x在v中的位置(介于0~n之间的一个整数),否则,该函数返回-1。
思路:在折半查找时,首先将输入值x与数组v的中间元素进行比较。如果x小于中间元素的值,则在该函数的前半部分查找,否则,在该数组的后半部分查找。在这两种情况下,下一步都是将x与所选部分的中间元素进行比较。这个过程一直进行下去,直到找到制定的值或者查找范围为空。
int bitsearch(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;
}
练习3-1
在上面有关折半查找的例子中,while循环语共执行了两次,其实只要一次就足够了(代价是将更多的测试在循环外执行)。重写该函数,使得在循环内部只执行一次。比较两者的运行时间。
对于三路判定以后或许可以这样改进。
int bitsearch2(int x,int v[], int n)
{
int low,high,mid;
low = 0;
high = n-1;
if( x<v[low] || x>v[high])
return -1;
mid = (low + high) / 2;
while (low <= high && x != v[mid]) {
if(x < v[mid])
high = mid -1;
else
low = mid + 1;
mid = (low + high) / 2;
}
if(x == v[mid])
return mid;
else
return -1;
}
C程序设计语言练习 第三章的更多相关文章
- 数据结构与算法分析——C语言描述 第三章的单链表
数据结构与算法分析--C语言描述 第三章的单链表 很基础的东西.走一遍流程.有人说学编程最简单最笨的方法就是把书上的代码敲一遍.这个我是头文件是照抄的..c源文件自己实现. list.h typede ...
- Java语言程序设计(基础篇) 第三章 选择
第三章 选择 3.8 计算身体质量指数 package com.chapter3; import java.util.Scanner; public class ComputeAndInterpret ...
- 《python语言程序设计》_第三章(数字函数、字符串和对象)
3.2_常见的Python函数 (1) abs()函数 求绝对值 (2) max(x1,x2,x3,....)求最大值 (3) min(x1,x2,x3,....)求最小值 (4) pow 返回a的b ...
- C语言数据结构——第三章 栈和队列
三.栈和队列 栈和队列是两种重要的线性结构.从数据结构的角度来看,栈和队列也是线性表,它的特殊性在于栈和队列的基本操作是线性表操作的子集,它们的操作相对于线性表来说是受到限制的,因此,可以称其为限定性 ...
- JavaScript高级程序设计学习笔记第三章--基本概念
一.标识符: 1.区分大小写 2.命名规则: 第一个字符必须是一个字母.下划线(_)或一个美元符号($) 其他字符可以是字母.下划线.美元符号或数字 标识符中的字母也可以包含扩展的 ASCII 或 U ...
- C语言学习第三章
写在课前,提醒自己写代码的时候一定要注意不能漏写符号!提醒自己写代码的时候一定要注意不能漏写符号!提醒自己写代码的时候一定要注意不能漏写符号! 今天主要学习掌握if...else条件结构,多重if条件 ...
- C语言_第三章
1.常量 1.整型常量 2.实型常量 1.十进制小数形式,由数字和小数点组成. 2.指数形式(以E或e代表以10 ...
- 【linux程序设计4th】第三章1
makefile .PHONY:clean all CC=gcc CFLAGS=-Wall -g ###replace your bin BIN=simple_write simple_read co ...
- C语言基础-第三章
C语句和数据输入/输出(函数) 1.printf();输出函数 2.getch();输入函数 3.scanf();格式输入 4.puts();字符串输出 5.gets();字符串输入
随机推荐
- slf4j、jcl、jul、log4j1、log4j2、logback大总结[转]
#1 系列目录 jdk-logging.log4j.logback日志介绍及原理 commons-logging与jdk-logging.log4j1.log4j2.logback的集成原理 slf4 ...
- Scarily interesting! (URAL - 2021)
Problem This year at Monsters University it is decided to arrange Scare Games. At the Games all camp ...
- JAVA RPC 生产级高可用RPC框架使用分享
先放出链接,喜欢的给个star:https://gitee.com/a1234567891/koalas-rpc 一:项目介绍 koalas-RPC 个人作品,提供大家交流学习,有意见请私信,欢迎拍砖 ...
- oracle行转列和列转行(pivot 和 unpivot 函数,wm_concat函数 )
create table demo(id int,name varchar(20),nums int); ---- 创建表insert into demo values(1, '苹果', 1000); ...
- ubuntu 安装go
sudo apt install golang-go
- [oracle]TX行锁发生的常见场景(转贴)
TX行锁发生的常见场景: 1.当前会话要更新或删除的记录,已经被其他会话更新或删除. 2.对于表上有唯一索引的情况,多个会话插入或更新为相同的键值. 3.对于表上有位图索引的情况,多个会话即使更新不同 ...
- 背包DP 方案数
题目 1 P1832 A+B Problem(再升级) 题面描述 给定一个正整数n,求将其分解成若干个素数之和的方案总数. 题解 我们可以考虑背包DP实现 背包DP方案数板子题 f[ i ] = f[ ...
- 图像模糊C均值聚类分割代码
转自:直觉模糊C均值聚类与图像阈值分割 - liyuefeilong的专栏 - CSDN博客 https://blog.csdn.net/liyuefeilong/article/details/43 ...
- oracle-sql脚本
select * from dba_users; create tablespace kyc_coo; create user kyc_coo identified by "123456&q ...
- Server 2012使用Windows PowerShell cmdlet安装角色和角色服务功能
Server 2012使用Windows PowerShell cmdlet安装角色和角色服务功能 Windows Server 2012 安装 SQL server 2008 出现了如下错误: 解 ...