您的位置:首页 > 其它

需要排序的最短子数组长度

2016-08-23 20:50 302 查看
要求: 给定一个无序数组arr,求出需要排序的最短子数组长度

// getMinLength.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>

using namespace std;

void getMinLength(int arr[],int len)
{
if(len == 0)
return;

//从后往前找到最小值,并记录最小值左边比它大的数的范围
int noMinIndex = -1;
int minNum = arr[len - 1];
for(int i = len -2;i > -1;i--)
{
if(arr[i] > minNum)
noMinIndex = i;
else
minNum = min(minNum,arr[i]);
}

if(noMinIndex == -1)
return;

//从前往后找一个极大值,并找到该极大值右边比它小的最远范围
int noMaxIndex = -1;
int maxNum = arr[0];
for(int i =1;i < len;i++)
{
if(arr[i] < maxNum)
noMaxIndex = i;
else
maxNum = max(arr[i],maxNum);
}

cout<<noMinIndex<<" ---"<<noMaxIndex<<"  :"<<noMaxIndex-noMinIndex+1<<endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
int arr[] = {1,5,3,4,2,6,7};
int len = 7;
getMinLength(arr,len);
system("pause");
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: