1. 程式人生 > >使用java實現快速排序的一個簡單例子

使用java實現快速排序的一個簡單例子

fast val rgs 快速 實現 個數 static void sta

public static void main(String[] args) {
		
		// 測試排序
		Random r = new Random();
		int arr[] = new int[10];
		for(int i=0;i<10;i++) {
			arr[i] = r.nextInt(100);
		}
		
		System.out.println("before sort");
		for(int i:arr) {
			System.out.print(i+",");
		}
		
		fastSort(arr, 0, arr.length-1);
		
		System.out.println("after sort");
		for(int i:arr) {
			System.out.print(i+",");
		}
		
	}
	
	public static void fastSort(int[] arr, int left, int right) {
		/**
		 * i 從左側查找時的索引
		 * j 從右側查找時的索引
		 * tmp 交換數據時,臨時變量
		 * baseVal 交換比較的基準值
		 */
		int i, j, tmp, baseVal;

		if (left > right) {
			return;
		}

		baseVal = arr[left];
		i = left;
		j = right;

		while (i != j) {
			// i和j不相同,則進行下面的操作
			// 要先從右向左找
			while (arr[j] >= baseVal && i < j) {
				// 直到找到比baseVal大的值為止
				j--;
			}
			// 再從左向右找
			while (arr[i] <= baseVal && i < j) {
				// 直到找到比baseVal小的值為止
				i++;
			}

			// 交換兩個數在數組中的位置
			if (i < j) {
				tmp = arr[i];
				arr[i] = arr[j];
				arr[j] = tmp;
			}
		}
		// 最終將基準歸為
		arr[left] = arr[i];
		arr[i] = baseVal;
		
		// 遞歸獲取左側和右側各排序結果
		fastSort(arr, left, i - 1);
		fastSort(arr, i + 1, right);
	}

  

使用java實現快速排序的一個簡單例子