天天看點

快排簡單代碼快排方法

**
           

快排方法

public static void quick(int[] arr, int begin, int end) {    //begin為數組最左側腳标 
  															//end為數組arr的長度   
	if (begin >= end) {                                    //遞歸結束條件
		return;
	}
	
	int key = arr[begin]; 				// 取最左邊的值為key值
	int keyIndex = begin; 				// 作用就是用于儲存最終的key值的位置 
	for (int i = begin + 1; i < end; i++) {
		if (arr[i] < key) { 				// 如果i位置的值比key值小
			keyIndex++; 					
												
			int tmp = arr[i];  
			arr[i] = arr[keyIndex];    // 騰位置, 儲存比key值小的值
			arr[keyIndex] = tmp;    // 交換keyIndex和i位置的值
		}
	}
									   // 交換開始位置和keyIndex位置
	arr[begin] = arr[keyIndex]; 
	arr[keyIndex] = key;			  // key值歸位, 左子列和右子列出來
	
	// 左子列
	quick(arr, begin, keyIndex);         // 左子列 遞歸
	quick(arr, keyIndex + 1, end);     // 右子列 遞歸
}