zoukankan      html  css  js  c++  java
  • 查找旋转数组的最小值

    查找旋转数组的最小值:

    假设一个排序数组以某个未知元素为支点做了旋转,找出旋转后数组中的最小值,假定数组中没有重复元素。

    如:原数组1,2,3,4,5,6,7旋转后得到4,5,6,7,1,2,3。旋转后的最小值为1。

    问题分析:

    这里不做过多的介绍,旋转之后的数组实际上可以划分为两个有序的数组,前面子数组的大小大于后面子数组的大小。

    最小的元素就是两个数组的分界线。

    程序实现:

     1 /***************************************
     2 FileName FindMinRotateArray.cpp
     3 Author : godfrey
     4 CreatedTime : 2016/5/3
     5 ****************************************/
     6 #include <iostream>
     7 #include <cstring>
     8 #include <vector>
     9 #include <algorithm>
    10 #include <stdio.h>
    11 #include <stdlib.h>
    12 
    13 using namespace std;
    14 
    15 int FindMinRotateArray(int* A,int size){
    16     int Low = 0;
    17     int High = size-1;
    18     int mid;
    19     while(Low < High){
    20         mid = (Low + High) / 2;
    21         if(A[mid] > A[High]){ //最小值在右半部份
    22             Low = mid + 1;
    23         }
    24         else if(A[mid] < A[High]){//最小值在左半部分
    25             High = mid;
    26         }
    27     }
    28     return A[Low];
    29 }
    30 int main()
    31 {
    32     int a[] = {4,5,6,7,1,2,3};
    33     int FindMinNum = FindMinRotateArray(a,sizeof(a)/sizeof(int));
    34     cout<<"the FindMinNum: ";
    35     cout<<FindMinNum<<endl;
    36     return 0;
    37 }

    运行结果:

    转载请注明出处:

    C++博客园:godfrey_88

    http://www.cnblogs.com/gaobaoru-articles/

    转载请注明出处: C++博客园:godfrey_88 http://www.cnblogs.com/gaobaoru-articles/
  • 相关阅读:
    ES6解构赋值
    ES6兼容
    ES6关键字
    ES6模板字符串
    Bootstrap面试题
    Javascript中类型转换的情况以及结果
    事件
    ES6 解构赋值
    ES6 基础(let const)
    数组与字符串常用方法
  • 原文地址:https://www.cnblogs.com/gaobaoru-articles/p/5456640.html
Copyright © 2011-2022 走看看