c_cpp 找到最小长度未排序的子阵列,排序使整个数组排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 找到最小长度未排序的子阵列,排序使整个数组排序相关的知识,希望对你有一定的参考价值。

// https://www.geeksforgeeks.org/minimum-length-unsorted-subarray-sorting-which-makes-the-complete-array-sorted/
#include <iostream>
using namespace std;

void algo (int a[], int n) {
    int i,l,r;

    for (l=0;l<n;l++)
        if (a[l]>a[l+1])
            break;

    if (l==n-1) {
        cout<< "Sorted Array";
        return;
    }

    for (r=n-1;r>=0;r--)
        if (a[r] < a[r-1])
            break;

    int min=a[l], max=a[l];
    for (i=l+1;i<=r;i++) {
        if (a[i] > max)
            max=a[i];
        if (a[i] < min)
            min=a[i];
    }

    for (i=0;i<l;i++)
        if (a[i] > min) {
            l=i;
            break;
        }
    for (i=n-1;i>r;i--)
        if (a[i] < max) {
            r=i;
            break;
        }

    cout<< "Minimum Length unsorted subarray lies between " << l << " and " << r;
}

int main () {
    int n,i;
    cin>>n;
    int a[n];
    for (i=0;i<n;i++)
        cin>>a[i];

    algo(a,n);

}

以上是关于c_cpp 找到最小长度未排序的子阵列,排序使整个数组排序的主要内容,如果未能解决你的问题,请参考以下文章

选择排序(Selection Sort)

初识算法

c_cpp 找到偶数和的子阵列数

详解选择排序

c_cpp 使用分而治之的方法查找未排序数组中的最小值和最大值

c_cpp 找到未排序数组中最大的对总和