快速排序+一道练习题

Posted 小AI技术工作室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序+一道练习题相关的知识,希望对你有一定的参考价值。

快速排序

先引入几个问题;

  1. 既然它叫快速排序,那么它的时间复杂度?

  2. 为什么它是''不稳定''的?

思路

1.从数列中挑出一个元素,称为 "基准"(pivot)

2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区操作;

3.递归地把小于基准值元素的子数列和大于基准值元素的子数列排序;

光说不练假把戏,上题:


描述给定一个数组,请你编写一个函数,返回该数组排序后的形式。示例1输入:[5,2,3,1,4]返回值:[1,2,3,4,5]
示例2输入:[5,1,6,2,5]返回值:[1,2,5,5,6]


import java.util.*;public class Solution {    public int[] MySort (int[] arr) {        // write code here        quicksort(arr,0,arr.length-1);        return arr;    }    private void quicksort(int[] arr,int left,int right){        if(left>=right){return;}        int L = left;        int R = 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;        quicksort(arr,L,left);        quicksort(arr,left+1,R);    }}



以上是关于快速排序+一道练习题的主要内容,如果未能解决你的问题,请参考以下文章

算法练习--快速排序堆排序

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

从一道简单算法题理解快速排序的 partition 操作

刨了快速排序

算法导论习题—堆排序快速排序

快速排序-递归实现