資料結構 排序 荷蘭國旗詳解

2021-09-12 18:23:52 字數 636 閱讀 3097

* 荷蘭國旗:將給定乙個陣列arr,和乙個數num,請把小於num的數放在陣列的左邊,等於num的數放在陣列的中間,大於num的數放在陣列的右邊。

*                     要求額外空間複雜度o(1),時間複雜度o(n)

* 思路:需要三個指標(小於num指標small、等於num指標equal、大於num指標big) 有以下三種情況

*     1、cur小於num,samll指標加一,同時推動equal指標加一;

*     2、cur等於num,equal指標加一,

*     3、cur大於num,big指標值和cur指標的值交換,同時big指標加一,cur不用動。

注意:要想清楚迴圈條件中是哪兩個下標進行對比。

public class dutchflag else

} }public static void main(string args) ;

// 呼叫方法

演算法與資料結構 荷蘭國旗問題

問題 給定乙個無序陣列arr,元素只有0,1,2三種取值 要求 重新排列陣列,使得所有值為0的元素在陣列左邊,值為1的元素在陣列右邊,值為2的元素在陣列中間。思路 設三種陣列索引,mid,left,right,假設一種中間過程,0,left 區間內元素的值為0,right,len 1 區間內元素為1...

荷蘭國旗問題 快速排序

目錄 一.荷蘭國旗 二.快速排序 亂序快排優化版 三.應用傳統快排求中位數 1.題目描述 給定乙個陣列arr和乙個數num,請把小於num的數放在陣列的左邊,等於num的數放在陣列的中間,大於num的數放在陣列的右邊。要求額外空間複雜度為o 1 時間複雜度為o n 2.分析思路 初始化less 1,...

荷蘭國旗 三色排序

1.荷蘭國旗問題 陣列只包含0,1,2對其排序 1 首先最簡單的就是計數排序,當然這裡不討論,一般情況下考察的都不是這個 2 和快排劃分過程相似 時間o n 空間o 1 快排劃分的時候有個標誌位 i left 1,如果a j x,j i 否則j i a j a i 互換位置.而該題目可以設定兩個標誌...