算法 (2) :快速排序(随机选择哨兵)

本文详细介绍了快速排序的基本思想,包括分解、递归求解和合并三个步骤。算法的时间复杂度在最坏情况下为O(n^2),平均情况为O(nlogn)。同时提供了代码实现和运行记录。
摘要由CSDN通过智能技术生成

2、快速排序

(1)基本思想

对于输入的子数组a[p:r],按以下三个步骤进行排序。

a.分解(Divide) :以a[p]为基准元素将a[p:r]划分成3段a[p:q-1] , a[q] , a[q+1: r],使a[p:q-1] 的任何一个元素小于等于a[q], 而a[q+1:r] 的任何一个元素都大于等于a[q]。下标q在划分过程中确定

b. 递归求解:通过递归调用快速排序算法分别对a[p:q-1]和a[q+1:r]进行排序

c.合并:由于对a[p : q-1] 和 a[q+1 : r] 的排序似乎就地进行的,所以在a[p:q-1]和a[q+1:r] 都已排好序后,不需要进行任何计算,a[p:r] 就已排好序。

(2)时间复杂度

最坏:T(n) = O(n^2)

平均:T(n) = O(nlogn)

(3)代码
import java.util.Arrays;
import java.util.Scanner;

public class QuickSort {
   

	public static void main(String[] args) {
   
		Scanner input = new Scanner(System.in);
		System.out.print("please input the size of array:");
		int size = input.nextInt();
		System.out.println("please input the arrays:");
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值