快速排序 劃分陣列(java實現)

2021-08-03 12:37:39 字數 928 閱讀 4103

題目:給出乙個整數陣列 nums 和乙個整數 k。劃分陣列(即移動陣列 nums 中的元素),使得:

所有小於k的元素移到左邊

所有大於等於k的元素移到右邊

返回陣列劃分的位置,即返回滿足 nums[i] 大於等於 k的陣列中第乙個位置 i。

很容易想到使用快速排序,快速排序的思路就不詳細說明了。下面是自己寫的快速排序的**

public

static

void

quicksort(int a,int left,int right)

}//最終將基準數歸位 ,將基數放在i=j的位置

a[left]=a[i];

a[i]=t;

//將劃分出來的數字繼續遞迴排序

quicksort(a, left, i-1);

quicksort(a, i+1, right);

}}

下面相大夥知道如何實現劃分陣列了吧。**如下:

public

static

intquickdivide(int a,int k)

}return i+n;

}public

static

void

main(string args) ;

//quicksort(a, 0, a.length-1);

int s=quickdivide(a,6);

system.out.println(s);

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

}

總結

演算法一定要把題目讀懂,一遍不懂讀兩遍,三遍,四遍,慢慢的培養自己解決問題思路,學會提公升。想對自己說,加油。

動態劃分陣列

問題描述 給定乙個正整數的集合a 是否可以將其分割成兩個子集合,使兩個子集合的數加起來的和相等。例a 可以分割 及 input 第一行集合元素個數n n 300 第二行n個整數 output 如果能劃分成兩個集合,輸出任意乙個子集,否則輸出 no sample input 51 3 8 4 10 s...

劃分 快速排序

很簡單。就不解釋了。就說說自己寫 時遇到的問題吧。無辜的總有乙個0值,插入到 左邊 12 10 3 198 120 8 54 7 12 10 3 0 0 8 54 7 只因為,陣列長度是10,但是只有8個資料,所以就有2個陣列元素為0 package high public class partin...

排序 快速排序(java實現)

快速排序是一種非常高效的排序演算法,它採用了 分而治之 的思想,把大的拆分成小的,小的再拆分為更小的。其原理如下 對於給定一組記錄,通過一趟排序後,將原序列分為兩部分,其中前一部分的所有記錄都比後一部分的所有記錄小,然後再依次對前後兩部分的記錄進行快速排序,遞迴該過程,直到序列中所有的記錄均為有序為...