快速排序(java實現)

一隻小小狗發表於2020-11-21

快速排序(java實現)

時間複雜度(平均)時間複雜度(最壞)時間複雜度(最好)空間複雜度空間複雜度穩定性複雜性
快速排序O(nlog2n)O(n2)O(nlog2n)O(nlog2n)不穩定較簡單
public static void quick(int[] arr,int left,int right){
	//首先確保傳入陣列 不為空
	if(arr==null||arr.length==0){
		return;
	}
	//確保 左右下標值符合要求
	if(left > right){
		return;
	}
	//拿到最左邊的值給 base下標
	int key =arr[left];
	int l = left;
	int r = right;
	while(l!=r){
		while(arr[r] >= key && l<r){
			r--;
		}
		while(arr[l] <= key && l<r){
			l++;
		}
		if(l<r){
			int temp = arr[l];
			arr[l] = arr[r];
			arr[r] = temp;
		}
	}
	
	arr[left] = arr[l];
	arr[l] = key;
	quick(arr,left,l-1);
	quick(arr,l+1,right);
}

在這裡插入圖片描述
在這裡插入圖片描述

相關文章