剑指offer-8 旋转数组的最小数字
来源:互联网 发布:js div显示隐藏 编辑:程序博客网 时间:2024/04/30 10:31
#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;int MinOrder(int* data,int index1,int index2);/* 充分利用部分排序的特点----二分法 1、两个指针,初始化为数组的头和尾 2、确定循环的条件*///数组没有重复元素的情况int MinItem(int* a,int length){ if(a==nullptr || length<=0) exit(EXIT_FAILURE); int index1 = 0,index2 = length-1; int indexmid = index1; while(a[index1] >= a[index2]) { if(index2-index1 ==1) { indexmid = index2;//最小的数一定在后半部分 break; } indexmid = (index1+index2)/2; //index1到indexmid还是递增有序的,最小的数在indexmid---index2 if(a[indexmid]>=a[index1]) index1 = indexmid; else if(a[indexmid]<=a[index2]) index2 = indexmid; } return a[indexmid];}//数组有重复元素int MinItem_1(int* a,int length){ if(a==nullptr || length<=0) exit(EXIT_FAILURE); int index1 = 0,index2 = length-1; int indexmid = index1; while(a[index1] >= a[index2]) { if(index2-index1 ==1) { indexmid = index2;//最小的数一定在后半部分 break; } indexmid = (index1+index2)/2; //考虑有重复元素的情况 if(a[index1]==a[index2] && a[index1]==a[indexmid]) { return MinOrder(a,index1,index2); } //index1到indexmid还是递增有序的,最小的数在indexmid---index2 if(a[indexmid]>=a[index1]) index1 = indexmid; else if(a[indexmid]<=a[index2]) index2 = indexmid; } return a[indexmid];}int MinOrder(int* data,int index1,int index2){ int result = data[index1]; for(int i = index1+1;i<=index2;i++) { if(result > data[i]) result = data[i]; } return result;}int main(){ int a[] = {5,1,2,3,4}; //int a[] = {1,1,1,0,1}; int temp= MinItem_1(a,5); cout<<temp<<endl; return 0;}
0 0
- 【剑指offer】旋转数组的最小数字
- 剑指offer--旋转数组的最小数字
- 剑指offer--旋转数组的最小数字
- 剑指offer:旋转数组的最小数字
- 《剑指offer》旋转数组的最小数字
- 剑指 offer:旋转数组的最小数字
- 剑指offer-旋转数组的最小数字
- 剑指offer 旋转数组的最小数字
- 【剑指offer】旋转数组的最小数字
- 剑指offer 旋转数组的最小数字
- 剑指offer-旋转数组的最小数字
- 剑指Offer:旋转数组的最小数字
- 剑指Offer 旋转数组的最小数字
- 剑指offer|旋转数组的最小数字
- 剑指offer:旋转数组的最小数字
- 【剑指offer】旋转数组的最小数字
- 《剑指offer》旋转数组的最小数字
- 剑指Offer:旋转数组的最小数字
- iPhone iPad 各种控件默认高度
- FZU 2194 星系碰撞(二分图匹配)
- Cocos2dx 3.3 遇到的问题
- Javascript 初学者应知的 24 条最佳实践
- OpenCV: OpenCV中IplImage图像格式
- 剑指offer-8 旋转数组的最小数字
- 调试打断点无效解决方法
- CAPropertyAnimation additive
- 一个简单的auth perl程序
- Eclipse中如何查看andriod apk真机运行的日志
- Scala 表达式编程实践
- cvCreateMemStorage函数
- 如何成为羽毛球高手?你距离一个真正的羽毛球高手还有多远?
- iOS开发的22个奇谲巧技