首页 > 编程知识 正文

快速排序算法详细图解,快速排序算法实现

时间:2023-05-04 00:41:06 阅读:31665 作者:3771

正如名字所示,快速排序是一种快速高效的排序算法。

快速排序原理:

从数组a等要排列的数量中选择中心值key,将数组a按一次排序分为两部分。 其中,以key为中心,key的右侧大于key,key的左侧小于key。 然后,对这两个部分分别重复这个过程,直到有序为止。

整个排序过程简化为一次排序过程,递归调用就可以了。

排序方法:

定义1,i=0,j=A.lenght-1,I是第一个数的下标,j是最后一个数的下标

2 )从数组的最后几个Aj开始从右向左搜索,首先找到小于key的数,标记为Aj

3、从数组的第一个数Ai开始从左向右搜索,找到比第一个key大的数,记为Ai

4、更换Ai和Aj

5,重复这个过程直到i=j

6 )调整钥匙的位置,更换A[i]和钥匙

将排列的排列设为A[8]={ 5 2 8 9 2 3 4 9 }

选择key=5,开始时i=0,j=7

索引0123456 7

开始: 5 2 8 9 2 3 4 9

i j

第一次找5 2 8 9 2 3 4 9

i j

更换:5 2 4 9 2 3 8 9

i j

寻找第二次的5 2 4 9 2 3 8 9

i j

更换:5 2 4 3 2 9 8 9

i j

第三次找5 2 4 3 2 9 8 9

ij

调整关键:25435989

ij

以下为代码:

package com.quicksort;

import java.util.Arrays;

公共类快速排序{

publicstaticvoidmain (字符串[ ] args ) {

int [ ] a={ 1,2,4,5,7,4,5,3,9,0 };

系统. out.println (arrays.tostring (a ) );

快速排序(a;

系统. out.println (arrays.tostring (a ) );

}

公共服务语音quicksort (int [ ] a ) {

if(a.Length0) {

快速排序(a,0,a.length-1 );

}

}

私有状态语音quicksort (int [ ] a,int low,int high ) {

//1,找到递归算法的出口

if (低高度) {

返回;

}

//2,存起来

int i=low;

int j=high;

//3,密钥

int key=a[ low ];

//4,排序一次

wile(Ij ) {

//4.1,从右向左找到小于第一个密钥的数量

while(Ikey ) {

j----;

}

//4.2从左向右找到大于第一个key的数

wile(I

I;

}

//4.3更换

if(I )

int p=a[i];

a[i]=a[j];

a[j]=p;

}

}

//4.4,调整密钥位置

int p=a[i];

a[i]=a[low];

a[low]=p;

//5,如果快的话

快速排序(a,low,i-1 );

//6,在key右侧的列中

快速排序(a,i 1,high );

}

}

-----------------

作者: ye小芬

来源: CSDN

译文: 3359 blog.csdn.net/ye xiaofen/article/details/78018204

声明:本文为博客原创文章。 转载请附上博文链接!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。