编程之美,3.11程序改错, 二分扩展
2014-07-22 20:09
246 查看
#include <iostream> using namespace std; int find1(int *a, int start, int end, int b) {//给定一个有序序列a,求任意一个i使得a[i]等于b,不存在返回-1. int mid; while(start<=end){ mid = start + (end-start)/2; if(a[mid]<b){ start = mid+1; }else if(a[mid] > b){ end = mid-1; }else{ return mid; } } return -1; } int find2(int *a, int start, int end, int b) {// 给定一个有序序列a,求任意最小的i使得a[i]等于b,不存在返回-1. int mid ; while((start+1) < end){ mid = start+(end-start)/2; if(a[mid] >= b) end = mid; else start = mid; } if(a[end] == b) return end; else if(a[start]==b) return start; else return -1; } int find3(int *a, int start, int end, int b) {// 给定一个有序序列a,求任意最大的i使得a[i]等于b,不存在返回-1. int mid ; while((start+1) < end){ mid = start+(end-start)/2; if(a[mid] > b) end = mid; else start = mid; } if(a[end] == b) return end; else if(a[start]==b) return start; else return -1; } int find4(int *a, int start, int end, int b) {// 给定一个有序序列a,求任意最大的i使得a[i]小于b,不存在返回-1. int mid ; while((start+1) < end){ mid = start+(end-start)/2; if(a[mid] < b) start = mid; else end = mid; } if(a[start]<b && a[end]>=b) return start; else if(a[end]<b) return end; else return -1; } int find5(int*a, int start, int end, int b) {//给定一个有序数组a,求最小的i使得a[i]大于b,不存在则返回-1. int mid; while((start+1) < end){ mid = start + (end-start)/2; if(a[mid] > b) end = mid; else start = mid; } if(a[start] > b) return start; else if(a[start]<=b && a[end]>b) return end; else return -1; } int main() { int a1[]={1,2,3,4,4,5}; int a2[]={1,2,2,2,2,3}; int a3[]={1,2,3,4,5,6}; int b = 4; cout<<find5(a2,0,5,10)<<endl; cout<<find5(a3,0,5,4)<<endl; return 0; }
相关文章推荐
- [编程之美] PSet3.11 程序改错:二分查找与扩展
- 二分查找 编程之美3.11 程序改错
- 3.11 程序改错(二分查找)
- 编程之美-程序改错及扩展问题
- 编程之美-程序改错及扩展问题
- 读书笔记之编程之美 - 3.11 程序改错
- 编程之美3.11扩展问题
- PCI网卡上扩展ROM编程 6.水到渠成:写一个扩展ROM程序
- 编程之美3-11程序改错
- 3.11 程序改错
- 编程之美3.11 二分查找常见问题
- ASP.NET 3.5核心编程学习笔记(55):自定义扩展程序控件的创建
- 编程之美3.11扩展问题 简单并带有错误的环形单链表检测代码
- 编程之美-程序改错方法整理
- Python基础教程读书笔记(第17章—第19章:扩展Python;程序打包;好玩的编程)
- 由July师兄二分查找代码及编程珠玑有感:循环不变性(断言)证明程序的正确性及发现bug
- 用php的c扩展编程调用 c程序的动态链接库
- 编程之美:第三章 结构之法 3.11程序改错
- 3.11 程序改错
- WIN32 编程示例:嵌入式式软件开发程序入门(完全从网上copy的文章)