<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 找到最小長度未排序子數組,進行排序,使整個數組排序 > 原文: [https://www.geeksforgeeks.org/minimum-length-unsorted-subarray-sorting-which-makes-the-complete-array-sorted/](https://www.geeksforgeeks.org/minimum-length-unsorted-subarray-sorting-which-makes-the-complete-array-sorted/) 給定大小為 n 的未排序數組 arr [0..n-1],找到最小長度的子數組 arr [s..e],以便對該子數組進行排序可使整個數組排序。 **示例**: 1)如果輸入數組為[10,12,20,30,25,40,32,31,35,50,60] ,您的程序應該能夠找到子數組位于索引 3 和 8 之間。 2)如果輸入數組為[0、1、15、25、6、7、30、40、50],則程序應該能夠找到子數組位于索引 2 和 5 之間。 **解決方案**: **1)找到候選未排序子數組** a)從左向右掃描,找到比下一個元素大的第一個元素。 令*或*為此類元素的索引。 在上面的示例 1 中, *s* 為 3(索引為 30)。 b)從右向左掃描,找到第一個元素(從右到左的順序為第一個),該元素小于下一個元素(從右到左的順序為下一個)。 令 *e* 為該元素的索引。 在上面的示例 1 中,e 為 7(索引為 31)。 **2)檢查對候選未排序子數組進行排序是否可以對整個數組進行排序。 如果不是,則在子數組中包含更多元素。** a)在 *arr [s..e]* 中找到最小值和最大值。 令最小值和最大值為 *min* 和 *max* 。 [30、25、40、32、31]的 *min* 和 *max* 分別為 25 和 40。 b)在 *arr [0..s-1]* 中找到大于 *min* 的第一個元素(如果有),更改 *s* 索引此元素。 在上面的示例 1 中沒有此類元素。 c)在 *arr [e + 1..n-1]* 中找到小于最大值的最后一個元素(如果有),更改 *e* 索引此元素。 在上面的示例 1 中,e 更改為 8(索引為 35) **3)打印 *s* 和 *e* 。** **實現**: ## C++ ```cpp // C++ program to find the Minimum length Unsorted Subarray,? // sorting which makes the complete array sorted #include<bits/stdc++.h> using namespace std; void printUnsorted(int arr[], int n) { int s = 0, e = n-1, i, max, min;? // step 1(a) of above algo for (s = 0; s < n-1; s++) { ????if (arr[s] > arr[s+1]) ????break; } if (s == n-1) { ????cout << "The complete array is sorted"; ????return; } // step 1(b) of above algo for(e = n - 1; e > 0; e--) { ????if(arr[e] < arr[e-1]) ????break; } // step 2(a) of above algo max = arr[s]; min = arr[s]; for(i = s + 1; i <= e; i++) { ????if(arr[i] > max) ????max = arr[i]; ????if(arr[i] < min) ????min = arr[i]; } // step 2(b) of above algo for( i = 0; i < s; i++) { ????if(arr[i] > min) ????{? ????s = i; ????break; ????}????? }? // step 2(c) of above algo for( i = n -1; i >= e+1; i--) { ????if(arr[i] < max) ????{ ????e = i; ????break; ????}? }? // step 3 of above algo cout << "The unsorted subarray which"? ?????<< " makes the given array" << endl ?????<< "sorted lies between the indees "? ?????<< s << " and " << e; return; } int main() { ????int arr[] = {10, 12, 20, 30, 25, ?????????????????40, 32, 31, 35, 50, 60}; ????int arr_size = sizeof(arr)/sizeof(arr[0]); ????printUnsorted(arr, arr_size); ????getchar(); ????return 0; } // This code is contributed? // by Akanksha Rai ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看