Java快速排序的具体实现

www.allocmem.com · · 3416 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

最开始写快速排序花了不少时间,其实关于排序算法,最重要的是首先你要理解,各种排序算法的原理是什么,当你理解了具体的实现原理再来写程序的时候你就会觉得很轻松了。不多说,直接上代码:

package Algorithm.sort;
/**
 * 快速排序的实现
 * @author zhoudafu
 *
 */
public class QuickSort {

    public void quickSort(int[] a,int low,int high){
        int i = low;
        int j = high;
        int key = a[low];

        //分治递归结束判断
        if(i == j){
            return;
        }

        while(true){
            while(i<j){
                if(a[j]<key){
                    int temp = a[j];
                    a[j] = a[i];//注意不是和key互换,而是和a[i]a[j]比较互换
                    a[i] = temp;
                    break;//重要,当交换完为止后结束本次while循环
                }else{
                    j--;
                }
            }

            while(i<j){
                if(a[i]>key){
                    int temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                    break;//重要,当交换完为止结束本次while循环
                }else{
                    i++;
                }
            }
            if(i == j){
                break;//此时跳出while(true)循环
            }
        }
        //递归分治
        quickSort(a,low,i-1);
        quickSort(a,i+1,high);
    }
    public static void main(String[] args) {
        int a[] = {49,38,65,97,76,13,27};
        QuickSort qs = new QuickSort();
        qs.quickSort(a, 0, a.length-1);
        for (int i = 0; i < a.length; i++) {
            System.out.print( a[i] + " ");
        }
    }
}


本文来自:www.allocmem.com

感谢作者:www.allocmem.com

查看原文:Java快速排序的具体实现

3416 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传