首頁 > Java > java教程 > Java中的快速排序

Java中的快速排序

(*-*)浩
發布: 2019-10-22 15:53:14
轉載
3014 人瀏覽過

快速排序的原理

快速排序是對冒泡排序的一種改進,冒泡排序是透過一個個比較,從而將小的值放在一端,而大的值放在另外一端,以達到排序的目的。

Java中的快速排序

而快速排序,是先選定一個臨界值,將比這臨界值小的值放在一端,而比臨界值大的值放在另外一端。重複上一段方法,可以把已經通過臨界值分成的兩邊,再進行兩次的分放……將其資料排序好,則整個快速排序就完成了。

快速排序的演算法

核心演算法:

//QuickSort
while(i < j) {
		while(num[j] > tmp && j > i)
			--j;
		while(num[i] <= tmp && i < j) {
			++i;
		}
		if(i < j) {
			t = num[i];
			num[i] = num[j];
			num[j] = t;
		}
	}
	num[left] = num[i];
	num[i] = tmp;
登入後複製

以下是完整的QuickSort程式:

//QuickSort.java
public class QuickSort {
	public static void main(String[] args) {
		int[] num = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
		
		System.out.print("Qriginal array is:");
		for (int i = 0; i < num.length; i++) {
			System.out.print(num[i] + " ");
		}
		System.out.println();
		
		//QuickSort
		quicksort(num, 0, 9);
		
		System.out.print("Sorted array is:");
		for (int i = 0; i < num.length; i++) {
			System.out.print(num[i] + " ");
		}
		System.out.println();
	}
	
	public static void quicksort(int[] num, int left, int right) {
		if(left > right)
			return;
		int tmp, i, j, t;
		tmp = num[left];
		i = left;
		j = right;
		while(i < j) {
			while(num[j] > tmp && j > i)
				--j;
			while(num[i] <= tmp && i < j) {
				++i;
			}
			if(i < j) {
				t = num[i];
				num[i] = num[j];
				num[j] = t;
			}
		}
		num[left] = num[i];
		num[i] = tmp;
		quicksort(num, left, i - 1);
		quicksort(num, i + 1, right);
	}
}
登入後複製

程式輸出如下圖所示:

Qriginal array is:10 9 8 7 6 5 4 3 2 1
Sorted array is:1 2 3 4 5 6 7 8 9 10
登入後複製

快速排序效率相對其他排序方法較高,因此快速排序是現在最好的通用排序方法。 QuickSort的時間複雜度為O(nlogn)。

以上是Java中的快速排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板