左神演算法 基礎班第二課 一 荷蘭國旗

2021-09-25 09:39:46 字數 921 閱讀 3685

問題:荷蘭國旗問題,給定乙個陣列,讓小於0的在左邊,大於0的在右邊,0在中間

如輸入 [1, -2, 3, 0, -3, 0]

輸出: [-2, -3, 0, 0, 3, 1]

思路:設定3個游標l = 0, r = n - 1, current = 0;l的左邊小於0,r的右邊大於0,中間為0

三種情況

a[current] < 0時, swap(a[current++], a[l++]) 

a[current] == 0時,current++

else              swap(a[current], a[r--])

**

#include #include using namespace std;

vectorf(vectora)

else if (a[current] > 0)

else

}return a;

}vectorg(vectora, int size)

else if (rand() % 3 == 1)

else

}return a;

}bool check(vectora)

else

}return true;

}void test()

else

}cout << "ok" << endl;

}int main()

//// a = f(a);

//// for (int i = 0; i < a.size(); i++)

//

// putchar(10);

return 0;

}

09 荷蘭國旗問題(左神演算法基礎班原始碼)

package basic class 01 荷蘭國旗問題 給定乙個陣列arr,和乙個數num,請把小於num的數放在陣列的 左邊,等於num的數放在陣列的中間,大於num的數放在陣列的右邊。要求額外空間複雜度o 1 時間複雜度o n public class code 08 netherlands...

Python基礎第二課

練習題 1 編寫乙個python程式來查詢那些既可以被7整除又可以被5整除的數字,介於1500和2700之間。your code here i for i in range 1500 2700,1 if i 7 0and i 5 0 2 龜兔賽跑遊戲 題目描述 話說這個世界上有各種各樣的兔子和烏龜,...

第二課 複雜排序演算法

1.歸併排序 public static void mergesort int arr mergesort arr,0,arr.length 1 public static void mergesort int arr,int l,int r int mid l r l 2 mergesort ar...