快速排序

快速排序


前言

快速排序是对冒泡排序的一种优化的排序算法


1、什么是快速排序?

快速排序法,是通过把每一个元素的位置确定,从而达到整个数组的排序,即,由内而外,由小及大。
快速排序法号称是目前最优秀的算法之一,实现思路是,将一个数组的排序问题看成是两个小数组的排序问题,而每个小的数组又可以继续看成更小的两个数组,一直递归下去,直到数组长度大小最大为2(如果不能理解为什么,看完这篇你就明白了)。

2、快速排序过程分析

过程分析(以从小到大排序为例):

1.元素交换法

1.过程分析

理解1:我称之为元素交换法
1.先选取数组的一个元素作为参照物(一般选取第一个或者最后一个元素)
2.如果选取第一个元素,那么就从右往左开始找元素。此时的下标记为R。每找一个元素R=R-1,直到找到一个小于参照物的元素。记录此时的R。
3.然后再从左往右开始找元素。此时的下标记为L。每找一个元素L=L+1,直到找到一个大于参照物的元素。记录此时的L,
4.如果L<R,就把下标为L,R的两个元素的位置交换一下。
5.以L,R的位置作为起点重复2和3的步骤。
6.L=R时,把参照物与此时的下标为L(R)的元素交换位置,第一次结束。
7.把L=R这个位置左右两边的元素划分为两个小数组,重复步骤1——6.
步骤7实质上是递归的思想。
过程图示:(动图是找的一个,有很多类似的动图,这个是比较符合我所理解的快速排序。)
快速排序

2.代码实现

代码如下(示例):

public static void quickSort(int[] arr,int low,int high){
   
            int i,j,temp,t;
            if(low>high){
   
                return;
            }
            i=low;
            j=high;
            //temp就是基准位
            temp = arr[low];

            while (i<j
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值