[JAVA]快速排序
package sort_book_datastruction;
import java.util.ArrayList;
import java.util.Arrays;
/**
* 快速排序:
* 基本思想:通過一趟排序將待排序列分割成兩部分,其中一部分記錄的關鍵字比另一部分記錄的關鍵字小,
* 則可以分別對兩部分記錄繼續進行排序,以達到整個序列有序;
* 每一趟能夠將樞軸元素放在正確的位置上。
*具體做法:附設兩個指標low和high,他們的初值分別是low和high,設樞軸記錄的關鍵字為pivotkey,
* 則首先從high所指的位置起向前搜尋找到第一個關鍵字小於pivotkey的記錄和樞軸互相交換,
* 然後從low所指的位置起向後搜尋,找到第一個關鍵字大於pivotkey的記錄和樞軸互相交換,
* 重複這兩步,直至low=high為止;
*改進:每交換一對記錄需進行三次記錄賦值操作,而實際過程中對樞軸記錄的賦值是多餘的,因為只有一趟排序結束時,即
* low=high的位置才是樞軸記錄的最後位置。
* @author Administrator
*
*/
public class QuikSort {
// public void swap(int[] array,int low,int high){
// int temp = array[low];
// array[low] = array[ high];
// array[high] =temp;
// }
public int getMiddle(int[] array,int low ,int high){
if(array.length <=0)
return -1;
int pivotkey = array[low];//用子表的第一個記錄作為基準元素
while(low<high){ //從表的兩端交替的向中間掃描
while(low<high&&array[high]>=pivotkey)
high--;
//swap(array,low,high);
array[low]=array[high];//改進的方法;將比樞軸記錄小的記錄移動到低端;
while(low<high &&array[low]<=pivotkey)
low++;
//swap(array,low,high);
array[high]=array[low];//將樞軸記錄大的記錄移動到高階;
}
array[low] = pivotkey;//樞軸記錄到位;
return low;
}
public void Qsort(int[] array,int low,int high){
if(low<=high){//長度大於1
int pivotloc = getMiddle(array,low,high);//將順序表array一分為2
Qsort(array,low,pivotloc-1);//對低子表做遞迴排序
Qsort(array,pivotloc+1,high);//對高子表做遞迴排序
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
QuikSort qs = new QuikSort();
int[] array = {49,38,65,97,76,13,27,49};
qs.Qsort(array, 0, array.length-1);
System.out.println("QUickSort:"+Arrays.toString(array));
}
}
相關文章
- java 快速排序Java排序
- 快速排序-java排序Java
- 快速排序(java實現)排序Java
- 快速排序 java實現排序Java
- java實現快速排序Java排序
- 【JAVA演算法】排序演算法 -- 快速排序Java演算法排序
- 排序演算法-Java實現快速排序演算法排序演算法Java
- 排序之快速排序排序
- 排序:氣泡排序&快速排序排序
- 隨機快速排序Java程式碼實現隨機排序Java
- Java不用遞迴的迭代快速排序示例Java遞迴排序
- 快速排序排序
- 快速排序&&歸併排序排序
- JAVA將快速將列表分組並排序鍵Java排序
- 快速排序快速入門排序
- 排序演算法 - 快速排序排序演算法
- 選擇排序和快速排序排序
- 四、歸併排序 && 快速排序排序
- 排序演算法__快速排序排序演算法
- 排序演算法:快速排序排序演算法
- python 快速排序Python排序
- 快速排序法排序
- 分治—快速排序排序
- javascript 快速排序JavaScript排序
- 快速排序javaScript排序JavaScript
- js 快速排序JS排序
- LeetCode:快速排序LeetCode排序
- 二十、快速排序演算法——JAVA實現(遞迴)排序演算法Java遞迴
- php插入排序,快速排序,歸併排序,堆排序PHP排序
- 排序演算法之 '快速排序'排序演算法
- 快速排序 (Quick Sort)排序UI
- 快速排序C++排序C++
- 三種快速排序排序
- 8.22_快速排序排序
- 圖解快速排序圖解排序
- 簡單快速排序排序
- 遞迴-*快速排序遞迴排序
- 三種語言實現快速排序(C++/Python/Java)排序C++PythonJava
- 堆排序和快速排序效能比較排序