zoukankan      html  css  js  c++  java
  • 需要排序的最短子数组长度

    要求: 给定一个无序数组arr,求出需要排序的最短子数组长度

     1 // getMinLength.cpp : 定义控制台应用程序的入口点。
     2 //
     3 
     4 #include "stdafx.h"
     5 #include <iostream>
     6 
     7 using namespace std;
     8 
     9 void getMinLength(int arr[],int len)
    10 {
    11     if(len == 0)
    12         return;
    13 
    14     //从后往前找到最小值,并记录最小值左边比它大的数的范围
    15     int noMinIndex = -1;
    16     int minNum = arr[len - 1];
    17     for(int i = len -2;i > -1;i--)
    18     {
    19         if(arr[i] > minNum)
    20             noMinIndex = i;
    21         else
    22             minNum = min(minNum,arr[i]);
    23     }
    24 
    25     if(noMinIndex == -1)
    26         return;
    27 
    28 
    29     //从前往后找一个极大值,并找到该极大值右边比它小的最远范围
    30     int noMaxIndex = -1;
    31     int maxNum = arr[0];
    32     for(int i =1;i < len;i++)
    33     {
    34         if(arr[i] < maxNum)
    35             noMaxIndex = i;
    36         else
    37             maxNum = max(arr[i],maxNum);
    38     }
    39 
    40     cout<<noMinIndex<<" ---"<<noMaxIndex<<"  :"<<noMaxIndex-noMinIndex+1<<endl;
    41 }
    42 
    43 int _tmain(int argc, _TCHAR* argv[])
    44 {
    45     int arr[] = {1,5,3,4,2,6,7};
    46     int len = 7;
    47     getMinLength(arr,len);
    48     system("pause");
    49     return 0;
    50 }
    View Code
  • 相关阅读:
    MiniOS系统
    《硅谷传奇》
    《构建之法》1—3章
    学术诚信与职业道德
    Sprint2
    Scrum 项目 7.0 Sprint回顾
    Scrum 项目 6.0 sprint演示
    Scrum 项目 5.0
    Scrum 项目4.0
    操作系统 实验三 进程调度模拟程序
  • 原文地址:https://www.cnblogs.com/lp3318/p/5800811.html
Copyright © 2011-2022 走看看