美文网首页
冒泡排序和快速排序的Java实现

冒泡排序和快速排序的Java实现

作者: nzdxwl | 来源:发表于2019-10-22 23:51 被阅读0次

    算法

    冒泡排序

    冒泡排序的基本操作是对数组的元素两两比较,较大的往区间后面移动;第一轮将最大的元素移到最后,接着是第二大,照此进行,总共需要进行n-1轮,n=数组的长度。

    /**
     * 冒泡排序
     * @param arr
     */
    public static void bubbleSort(int[] arr) {
        for(int i=arr.length-1;i>0;i--) {//循环n-1次,n=数组长度
            for(int j=0;j<i;j++) {
                if(arr[j+1]<arr[j]) {
                    arr[j] = arr[j]^arr[j+1];
                    arr[j+1] = arr[j]^arr[j+1];
                    arr[j] = arr[j]^arr[j+1];
                }
            }
        }
    }
    

    快速排序

    /**
     * 快速排序
     * @param arr
     * @param start
     * @param end
     */
    public static void quickSort(int[] arr, int start, int end) {
        if(end-start<2) return; //退出条件
        int l = start, r = end, p = arr[l]; //区间左右索引,以及用来分区的元素
        while(l<r) {
            while(l<r && arr[r]>p) r--;  //从右向左逐个比较,寻找小于p的元素位置
            if(l<r) arr[l++]=arr[r];     //如有小于p的元素则移动到左侧
            while(l<r && arr[l]<p) l++;  //从左向右搜寻大于p的元素
            if(l<r) arr[r--]=arr[l];   //如果有则移到右侧
        }
        arr[l] = p;  
        quickSort(arr, start, l-1);
        quickSort(arr, l+1, end);
    }
    

    --

    相关文章

      网友评论

          本文标题:冒泡排序和快速排序的Java实现

          本文链接:https://www.haomeiwen.com/subject/fyxhvctx.html