如何對乙個元素只有0和1的陣列進行排序?

時間 2021-05-05 17:38:34

1樓:

雙指標,也是O(n)時間。

class Solution {

public void inplaceMove(int nums) {

int i = 0;

for (int j = 0; j < nums.length; j ++) {

if (nums[j] == 0) {

int temp = nums[i];

nums[i] = nums[j];

nums[j] = temp;

i ++;

2樓:嘟嘟

int index=0;

for(int i=0;i

if(arr[i]==0) {

arr[i]=1;

arr[index++]=0;

for(int i=0,k=1;iif(arr[i]==1) {//如果等於1的話

while(arr[arr.length-k]==1) {k++;

//當arr[arr.length-k]=1的時候進行arr[i]=0;

arr[arr.length-k]=1;

k++;

3樓:Xi Yang

本質上來講,內容只有0和1兩種,那麼根本不是乙個排序問題,而是乙個計數問題,因為內容幾乎完全喪失了異質性。

當然,如題主所補充,0和1只是標籤,那就是另乙個不同的問題了。然而快排一類的通用演算法也是在做兩兩交換,你未必值得去設計乙個專門的演算法。

另外,「不用再來一趟麼」、「題主是n你這2n」屬於純扯蛋。

O(n)指的是演算法的耗費與資料個數呈正比,請自行複習高中「正比」的概念。所以,只要是走有限次,不管走幾次,都同樣是O(n)。

每個資料處理中,實際做的操作非常重要。哪怕是O(n)和O(n^2),如果後者的係數很小,那麼在資料量少的時候O(n^2)反而會快很多。在這裡,過一遍計數、再走一遍memset,顯然比只走一遍但進行反覆的比較、交換要快。

java中乙個空陣列與乙個長度為0的陣列有什麼區別呀?

剷草除根 主要在客戶端呼叫的稍微有點區別。public int getNum 這樣寫呼叫的時候不用做非空判斷。public int getNum 這樣寫還需要做非空判斷。 我是派大星 空陣列如果是指數組變數引用為空的話,也就是意味著它就是個單純的陣列變數存在於棧空間,但是如果是長度為0的陣列就不一樣...

乙個陣列,若交換其中兩個元素的值,實參是a i 和a j ,那麼形參的引數形式是什麼樣的呢?

KevinYao1224 首先宣告一下,你沒有說這個陣列的型別,C也沒有模板 泛型等概念,所以我的回答就假設其型別為int,在此基礎上回答。但是我不會使用類似加減法或異或等必須基於整數運算的特殊取巧方法,因此如果題主需要用除了int以外的其它型別,大部分情況下只需要簡單替換就可以了 void my ...

如何從乙個弱弱的0變成乙個賊猛的1

你只要像我一樣找乙個比自己高很多的大漢,然後又會寵你又會賣萌,然後就會特別有征服欲哈哈哈,特別是他聲音又好聽,嬌喘起來真的能讓人有被電的感jio 0到1最主要的一點,你要有放棄前列腺高潮的覺悟哈哈哈。不過我經常強迫他反過來上我哈哈哈,他每次都極不情願,然後搞幾下就說 不行,我對我的老公下不了d。把我...