快速排序

本文介绍了快速排序的基本思想和步骤,并提供了Java代码实现。快速排序是一种高效的排序算法,通过一趟排序将数据分割成独立的两部分,再递归地对这两部分数据进行排序。
快速排序(Quicksort)是对冒泡排序的一种改进。

由C. A. R. Hoare在1962年提出。
它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小
,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。


java代码实现:

int[]a ={7,22,40,6,13,5,8};

int i =0;k=a.length-1;

int cata = a[0];

while(i !=j){

while(a[j] > k){

j--;

}
int temp = k;
k= a[j];
a[j]=temp;

while(a[i] <k){
i++;
}
int temp1 = k;
k=a[i];
a[i]=k;

if(i ==j){

}


}

原理:

7,22,40,6,13,5,8

初始化的时候 i=0,key=7(可以任选),j=length-1

1.首先j从右像左走,遇到比key小的值的时候则将Vj(下表j代表的数组值) 和 key交换
2.i从左往右走,遇到比key大的值的时候则将Vi和key交换

第一次j行走之后的值:

key(7)
i(0) j
7,22,40,6,13,5,8

1,当j走到5 的时候发现 5比key 小 ,则交换Vj=5 和key=7 的位置变为:

5,22,40,6,13,7,8

2,j走完之后则i进行行走,i从左往右走,当走到Vi=22的时候 发现22比 key大,那么交换 Vi 和key的位置,数组变为

5,7,40,6,13,22,8

重复上面的过程1,2知道将 比key小的数都放在key的左边,比key大的数都放在key的右边位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值