快速排序

来源:互联网 发布:imovie的windows版 编辑:程序博客网 时间:2024/06/05 20:00
/** * 所谓快速排序,就是在数组中随便找一个元素, * 以这个元素为基点,比这个基点大的放在右边,比这个基点小的放在左边。这是第一次排序。这时候数组成功的分成两个部分。 * 然后使用递归,对两个部分的数组再进行上述方法的排序,直到递归结束,最后排序成功。 * @author 王嘉锐 * */public class KuaiSuSort {//交换数组中两个元素的位置public static void swap(int[] source, int x, int y){int temp = source[x];source[x] = source[y];source[y] = temp;}public static int baseFund(int[] source, int low, int high){int basePoint = source[low];int baseLocation = low;while(low < high){while(low < high &&source[high] >= basePoint){high--;}while(low < high && source[low] <= basePoint){low++;}swap(source, low, high);}swap(source, low, baseLocation);return low;}//这里才是真这个的实现排序public static void sortReal(int[] source,int low, int high){if(low < high){int base = baseFund(source, low, high-1);sortReal(source, low, base - 1);sortReal(source, base + 1, high);}}//在这里并非真正的排序,这个方法只是为了给真正排序的sortReal方法传递参数而已,参数为三个:数组、元素最低点、元素最高点。public static void sort(int[] source){int low = 0;int high = source.length;sortReal(source, low, high);}public static void main(String[] args) {int[] a = {1,6,2,4321,2,89,12,3245,2,313};sort(a);for(int i = 0; i < a.length; i++){System.out.println(a[i]);}}}

原创粉丝点击