数据结构之--快速排序的实现

快速排序是一种常用的算法。

算法原理为选择一个基准数,把要排序的数组划分为两组,一边为小于该基准数,一边为大于该基准数;划分完成后可以得到一个部分有序的数组,接着在划分好的两边重复上述步骤,直到所有数据有序。

算法复杂度一般为 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)    收藏  举报