排序算法

2017-11-17  本文已影响0人  zychen143

快速排序

平均时间复杂度是O(N*lgN),最坏情况下是O(N^2),是一个不稳定的算法

package com.zychen.wordCount;

/**
 * @Author: 章源辰
 * @Date: 2017/11/17
 * @Description:
 */
public class QuickSort {

    public static void main(String[] args) {
        int[] array = {10, 50, 30, 20, 40};
        array = sort(array, 0, array.length - 1);
        for (int i : array) {
            System.out.print(i + ",");
        }
    }

    public static int[] sort(int[] arr, int l, int r) {
        if (l < r) {
            int i = l;
            int j = r;
            int x = arr[i];
            while (i < j) {
                while (i < j && x < arr[j]) {
                    j--;
                }
                if (i < j) {
                    arr[i++] = arr[j];
                }

                while (i < j && x > arr[i]) {
                    i++;
                }
                if (i < j) {
                    arr[j--] = arr[i];
                }
            }
            arr[i] = x;
            sort(arr, l, i - 1);
            sort(arr, i + 1, r);
        }
        return arr;
    }
}

上一篇下一篇

猜你喜欢

热点阅读