第4周 C语言及程序设计提高例程-20 经典:查找的艺术
2016-04-22 07:11
691 查看
1、数组中的基本操作:顺序查找元素
问题及代码:
知识总结:
学习心得:
2、用二分方法查找有序数组:一次比较, 缩减一半的规模
知识总结:
二分法查找方式的运算。
学习心得:
不太明白low与high定义的目的是为什么?在求出mid之后,赋值两个low、high有何用途?
问题及代码:
#include <stdio.h> #define SIZE 10 int main( ) { int d[SIZE]={34, 43, 98, 72, 12, 47, 31, 43, 1, 78}; int i,key,index=-1; printf("Input a key you want to search: "); scanf("%d" , &key); for(i=0; i<SIZE; i++) if(key == d[i]) { index = i; break; } if(index >= 0) printf("The index of the key is %d .\n", index); else printf("Not found.\n"); return 0; }运行结果:
知识总结:
学习心得:
2、用二分方法查找有序数组:一次比较, 缩减一半的规模
#include <stdio.h> #define SIZE 10 int main( ) { int d[SIZE] = {1, 3, 9, 12, 32, 41, 45, 62, 75, 77}; int low, high,mid,key,index=-1; printf("Input a key you want to search: "); scanf("%d" , &key); low=0,high=SIZE-1; while(low<=high) { mid=(low+high)/2; if(d[mid]==key){ index=mid; break; } else if(d[mid]>key) high=mid-1; else low=mid+1; } if(index >= 0) printf("The index of the key is %d .\n", index); else printf("Not found.\n"); return 0; }运行结果:
知识总结:
二分法查找方式的运算。
学习心得:
不太明白low与high定义的目的是为什么?在求出mid之后,赋值两个low、high有何用途?
相关文章推荐
- Power of Four leetcode 342
- 【C/C++】使用预编译命令时犯下的一个错误
- (LeetCode 15) 3Sum
- 【C++】static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
- Win7下的C语言开发环境
- 基于C++标准map的多线程安全容器mymap::map进化版
- C/C++中结构体引用中箭头->与点.的区别
- C++知识点积累(2)
- C++第四次上机实验
- C++第四次上机作业
- c++第4次作业
- [c++]set整理
- C语言问卷调查
- vtk的小总结(1):基础知识
- POJ 3264 Balanced Lineup 查询区间最大最小值 基础线状树水题
- C语言 单向链表的创建、遍历、排序、删除操作
- c语言自评
- C++播放音频
- 关于C语言的问卷调查
- 矩阵相乘(分治法)