快速排序


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

你可能感兴趣的:(java,算法)