快速排序(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的右边位置