`
iluoxuan
  • 浏览: 571073 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

冒泡和快速排序java

 
阅读更多

1: 冒泡最简单一种:

/**
     * 算法效率o(n*n)
     * @param array
     * @return
     */
    public void bubbleSort(int[] array) {
        if(array == null) {
            throw new IllegalArgumentException("array can not be null");
        }
        int size=array.length;
        for(int i=0; i < size; i++) {
            for(int j=i + 1; j < size; j++) {
                swap(array, i, j);
            }
        }
    }

private void swap(int[] array, int i, int j) {
        if(array[i] < array[j]) {
            int temp=array[i];
            array[i]=array[j];
            array[j]=temp;
        }
    }

 2: 快速排序 

 原理:0: 一般取第一个数作为基数BASE, left,right分别指向开头和结尾

           1:从right 开始取arry[right] 和BASE比较,如大right++,如小arry[left]=arry[right]

           2: 从left开始取arry[left]和BASE比较,如小left++,如大arry[right]=arry[]left]

          3: left=right 时arry[left]=BASE, 开始递归

/**
     * 快速排序
     * @param array
     * @return
     */
    public void quitSort(int[] array, int left, int right) {
        int temp=array[left];
        int i=left;
        int j=right;
        if(i >= j) {
            return;
        }
        while(i != j) {
            while(j > i && array[j] >= temp) {
                j--;
            }
            if(j > i) {
                array[i]=array[j];
            }
            while(j > i && array[i] <= temp) {
                i++;
            }
            if(j > i) {
                array[j]=array[i];
            }
        }
        array[i]=temp;
        quitSort(array, left, i - 1);
        quitSort(array, i + 1, right);

    }

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics