題目:給出乙個整數陣列 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實現)
快速排序是一種非常高效的排序演算法,它採用了 分而治之 的思想,把大的拆分成小的,小的再拆分為更小的。其原理如下 對於給定一組記錄,通過一趟排序後,將原序列分為兩部分,其中前一部分的所有記錄都比後一部分的所有記錄小,然後再依次對前後兩部分的記錄進行快速排序,遞迴該過程,直到序列中所有的記錄均為有序為...