package cn.com.wanghy;
/**
* 快速排序:是对起泡排序的一种改进,它的基本思想是:通过一趟排序将待排序记录分割成独立的两部分,
* 其汇总一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分继续进行排序,已达到
* 整个序列有序。快速排序是一种不稳定的排序算法,时间复杂度为O(n*lg(n))。
*
*
*/
public class QuickSort {
/**
* 一趟快速排序,使数组前半部分小于pivotkey,后半部分大于pivotkey
*
* @param array
* @param low
* @param high
* @return
*/
public static int Patition(int[] array, int low, int high) {
int pivotkey = array[low];
while (low < high) {
// System.out.println("low="+low+"||high="+high);
while (low < high && array[high] >= pivotkey)
high--;
array[low] = array[high];
while (low < high && array[low] <= pivotkey)
low++;
array[high] = array[low];
}
array[low] = pivotkey;
return low;
}
/**
* 使用递归的方式,对数组进行快速排序
*
* @param array
* @param low
* @param high
* @return
*/
public static int[] QSort(int[] array, int low, int high) {
if (low >= high)
return array;
int pivotkey = Patition(array, low, high);
// System.out.println("pivotkey="+pivotkey);
QSort(array, low, pivotkey - 1);
QSort(array, pivotkey + 1, high);
return array;
}
public static void main(String[] args) {
int[] array = { 12, 4, 2, 5, 9, 4, 3, 10, 11, 3 };
for (int i = 0; i < 10; i++) {
System.out.print(" " + array[i]);
}
System.out.println();
QuickSort.QSort(array, 0, 9);
for (int i = 0; i < 10; i++) {
System.out.print(" " + array[i]);
}
}
}
java实现快速排序算法
最新推荐文章于 2024-04-07 05:17:35 发布