package com.sw.demo.test;/** * 關於快速排序
* @author song
* */
public class testquicksort ;
quicksort(arr,0,arr.length-1); // 快速排序
for (int i = 0; i < arr.length; i++)
}/**
* 快速排序
* @param arr
* @param low
* @param high
*/public static void quicksort(int arr, int low , int high)
if((high - low) == 1)
return ;
} int pivot = arr[low]; // 任取乙個數字做為中間數字(一般,這裡也是去第乙個數字)
int left = low +1; // 定義左滑塊,當前的游標
int right = high; // 定義右滑塊,當前的游標
while(left < right)
left++; // 如果找不到,left++,一直向後找
}while(left <= right && right > low)
right--; // 如果找不到,right++,一直向前找
}if(left < right)
swap(arr,low,right); // 交換中間數字
quicksort(arr,low,right); // 排序前面陣列
quicksort(arr,right+1,high); // 排序後邊陣列}}
// 掉位方法
public static void swap(int array, int i, int j)
}
關於快速排序
int quicksort int array,int left,int right if left j quicksort array,left,j if i right quicksort array,i,right return 0 注意快速排序是通過遞迴完成的,也就不難理解其運用的思想主要是...
關於快速排序,歸併排序,堆排序
1 快速排序 quicksort 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面四步組成。1 如果不多於1個資料,直接返回。2 一般選擇序列最左邊的值作為支點資料。3 將序列分成2部分,一部分都大於支點資料,另外一部分都小於支點資料。4...
排序 快速排序
快速排序時實踐中最快的一直排序,平均時間是0 nlogn 最壞的情況是o n2 但是很容易將這種情況避免 空間複雜度 o n lgn 不穩定。快速排序時基於分治模式處理的,對乙個典型子陣列a p.r 排序的分治過程為三個步驟 1.分解 a p.r 被劃分為倆個 可能空 的子陣列a p q 1 和a ...