問題:荷蘭國旗問題,給定乙個陣列,讓小於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...