zoukankan      html  css  js  c++  java
  • 【二分查找】及相关问题

    1.旋转数组中找最小值

    顺序查找时间复杂度为O(n),二分查找时间复杂度为O(logn)

     1 // rotateArrMin.cpp : 定义控制台应用程序的入口点。
     2 //
     3 
     4 #include "stdafx.h"
     5 #include <iostream>
     6 using namespace std;
     7 
     8 void MinInOrder(int *arr,int begin,int end)
     9 {
    10     int result = arr[begin];
    11     for(int i = begin+1; i < end;i++)
    12         result = min(result,arr[i]);
    13     cout<<result<<endl;
    14 }
    15 
    16 void Min(int* arr,int len)
    17 {
    18     if(arr == NULL || len <= 0)
    19         return;
    20 
    21     int begin = 0;
    22     int end = len - 1;
    23     int middle = begin;
    24     int result = 0;
    25     //强middle初始化为begin,在原数组中也能返回第一个数即最小值,(此时旋转了0)
    26     while(begin <= end)
    27     {
    28         if(end - begin == 1)
    29         {
    30             result = arr[end];
    31             break;
    32         }
    33         middle = (begin + end)>>1;
    34 
    35         if(arr[begin] == arr[middle] && arr[middle] == arr[end])
    36             MinInOrder(arr,begin,end);
    37         //处理01111的旋转,11101等
    38 
    39         if(arr[middle] >= arr[begin])
    40             begin = middle;
    41         else if(arr[middle] <= arr[end])
    42             end = middle;
    43     }
    44     cout<<result<<endl;
    45 }
    46 
    47 int _tmain(int argc, _TCHAR* argv[])
    48 {
    49     int arr[] = {3,4,5,1,2};
    50     int len = 5;
    51     Min(arr,len);
    52     system("pause");
    53     return 0;
    54 }
    View Code
  • 相关阅读:
    shell脚本的分发,测试,查看
    shell 脚本获取cpu信息(转载)
    shell 脚本编写之获取字符串长度(转载)
    service
    关于Linux安装中NAT模式和桥接模式的区别详解(转载)
    kdj
    pod 详解
    k8s基本概念,资源对象
    AliOS Things添加环境变量
    子函数通过一级指针访问二维数组
  • 原文地址:https://www.cnblogs.com/lp3318/p/5823937.html
Copyright © 2011-2022 走看看