Johnny

表面的激烈是由于内心的单薄,真正的力量如同流水一般沉静
随笔 - 1, 文章 - 5, 评论 - 0, 引用 - 0
数据加载中……

快速排序Java代码

/**
 * 
@author sikaijian
 
*/
public class QuickSort {
    
    /**
     * 快速排序算法实现
     * 
@param data 待排序数组
     * 
@param left 左边界 初始0
     * 
@param right 右边界 初始数组长度-1
     * 
@author sikaijian
     
*/
    public static void sort(int[] data, int left, int right) {
        if (left > right)
            return;
        int pHead = left;  // 头部指针
        int pTail = right;  // 尾部指针
        int key = data[left];  // 哨兵

        while (pHead < pTail) {
            // 从右往左遍历,找到比key小的数,放到前面
            while (pHead < pTail && data[pTail] > key) pTail--;
            if (pHead < pTail) data[pHead++] = data[pTail];
            
            // 从左往右遍历,找到比key大的数,放到后面
            while (pHead < pTail && data[pHead] < key) pHead++;
            if (pHead < pTail) data[pTail--] = data[pHead];
        }
        
        data[pHead] = key; // 归位
        
        sort(data, left, pHead-1);  // 排序左边的数组
        sort(data, pHead+1, right);  // 排序右边的数组
    }
    
    /**
     * 测试代码
     * 
@param args
     
*/
    public static void main(String[] args) {
        int[] data = new int[] { 49, 23, 65, 13, 38, 96, 12, 33, 88, 123, 22,
                11, 9, 55 };

        for (int t : data) {
            System.out.print(t);
            System.out.print(" ");
        }
        System.out.println();
        System.out.println("------------------------------");
        QuickSort.sort(data, 0, data.length - 1);

        for (int t : data) {
            System.out.print(t);
            System.out.print(" ");
        }
    }
}

posted on 2012-09-21 11:01 瓢菝的雨夜 阅读(204) 评论(0)  编辑  收藏 所属分类: 数据结构算法


只有注册用户登录后才能发表评论。


网站导航: