快速排序

快速排序

这是一个比较快的排序方式,中心思想是对在无序数组种找到一个基准值,然后找出比基准值小的元素和比基准值大的元素组成一个有序整体,在递归调用达到排序效果的一种算法

参考实现

Python 实现

def quickSort(arr):
    if arr is None or len(arr) < 2:
        return arr
    else:
        # 基准值
        p = arr[0]
        less = [i for i in arr[1:] if i <= p]
        great = [i for i in arr[1:] if i > p]
    return quickSort(less) + [p] + quickSort(great)


nums = [1, -4, 9, 5, 6]
print(quickSort(nums))

Java 实现

    public static void quickSort(int[] arr, int left, int right) {

        if (arr.length < 2) {
            return;
        } else if (left < right) {
            int pivot = partition(arr, left, right);
            quickSort(arr, left, right - 1);
            quickSort(arr, pivot + 1, right);
        }

    }

    public static int partition(int[] arr, int left, int right) {
        //指定一个基准值
        int pivot = arr[left];
        //若分区左边索引小于右边索引
        while (left < right) {
            //从右边找到一个比基准小的数据
            while (left < right && arr[right] >= pivot) {
                //若未找到,往前移动
                right--;
            }
            arr[left] = arr[right];

            while (left < right && arr[left] <= pivot) {
                left++;
            }
            arr[right] = arr[left];
        }
        arr[left] = pivot;
        return left;
    }

    public static void main(String[] args) {
        int[] arr = {2, 6, 5, 1, 7, 0};
        quickSort(arr, 0, arr.length - 1);
        for (int j : arr) {
            System.out.println(j);
        }
    }

 

posted @ 2023-05-24 10:44  晓枫的春天  阅读(6)  评论(0编辑  收藏  举报