• Java快速排序代码


    写了两种,中间用分割线隔开了,一种是基于partition的,方法名为sort0;一种是递归的,方法名为sort

    public class QuickSort {
    
        public static void sort0(int[] a, int lo, int hi) {
            if(hi <= lo) return;
            int pivot = partition(a, lo, hi);
            sort(a, lo, pivot-1);
            sort(a, pivot+1, hi);
        }
    
        public static int partition(int[] a, int lo, int hi) {
            int pivot = a[lo], i=lo, j=hi+1;
            while (true) {
                while (a[++i] < pivot) if (i == hi) break;
                while (a[--j] > pivot) if (j == lo) break;
                if (i >= j) break;
                swap(a, i, j);
            }
            swap(a, lo, j);
            return j;
        }
        
        /*======================================分割线==================================================*/
    
        public static void sort(int[] a, int lo, int hi) {
            if (hi <= lo) return;
            int lt = lo;
            int i  = lo+1;
            int gt = hi;
            int v = a[lo];
            while (i <= gt) {
                if (a[i] < v) swap(a, lt++, i++);
                else if (a[i] > v) swap(a, i, gt--);
                else i++;
            }
            sort(a, lo, lt - 1);
            sort(a, gt + 1, hi);
        }
    
        public static void swap(int[] a, int i, int j) {
            int t = a[i];
            a[i] = a[j];
            a[j] = t;
        }
    
        public static void main(String[] args) {
    
            int[] a = {7,5,3,60,78,6,43,4,3,67,2,5,6,23,6,2,6,75434,3,7,27,456,5,34,234};
    
            //简单测试
            sort(a, 0, a.length-1);
            System.out.println(Arrays.toString(a));
        }
    }
  • 相关阅读:
    C# 日期格式化的中的 正斜杠的问题
    JQuery中如何click中传递参数
    《启示录:打造用户喜爱的产品》—— 读书笔记
    json串的使用
    谷歌浏览器怎么调试js
    web页面布局思想
    js或者cs代码拼接html
    筛选DataTable数据的方法
    Ajax的简单小例子
    简单的javascript例子
  • 原文地址:https://www.cnblogs.com/tudoo/p/14813494.html
Copyright © 2020-2023  润新知