数据结构之--快速排序的实现
快速排序是一种常用的算法。
算法原理为选择一个基准数,把要排序的数组划分为两组,一边为小于该基准数,一边为大于该基准数;划分完成后可以得到一个部分有序的数组,接着在划分好的两边重复上述步骤,直到所有数据有序。
算法复杂度一般为 n*log2n。
下面为使用递归实现快排算法:
package quick.sort; import java.util.Arrays; public class QuickSort { public static void sort(int[] array, int begin, int end) { int base = array[begin]; System.out.println("beging = " + begin + ";" + "base = " + base +";end = " + end); int low = begin; int high = end; if (begin >= end) return; while(low < high) { while(array[high] >= base && low < high) high -- ; while(array[low] <= base && low < high) low ++ ; if (low < high) { int temp = array[low]; array[low] = array[high]; array[high] = temp; } } array[begin] = array[low]; array[low] = base; System.out.println(Arrays.toString(array)); sort(array, begin, low-1); sort(array, low+1, end); } public static void main(String[] args) { int[] a = new int[]{6, 1, 2, 7, 9, 3, 4, 5, 10, 8}; sort(a, 0, 9); } }
输出如下:
beging = 0;base = 6;end = 9
[3, 1, 2, 5, 4, 6, 9, 7, 10, 8]
beging = 0;base = 3;end = 4
[2, 1, 3, 5, 4, 6, 9, 7, 10, 8]
beging = 0;base = 2;end = 1
[1, 2, 3, 5, 4, 6, 9, 7, 10, 8]
beging = 0;base = 1;end = 0
beging = 2;base = 3;end = 1
beging = 3;base = 5;end = 4
[1, 2, 3, 4, 5, 6, 9, 7, 10, 8]
beging = 3;base = 4;end = 3
beging = 5;base = 6;end = 4
beging = 6;base = 9;end = 9
[1, 2, 3, 4, 5, 6, 8, 7, 9, 10]
beging = 6;base = 8;end = 7
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
posted on 2017-07-26 16:54 willowWind 阅读(190) 评论(0) 收藏 举报
浙公网安备 33010602011771号