首页 > 代码库 > Java实现快速排序

Java实现快速排序

找工作时笔试做的一塌糊涂,连快速排序都不会了。

回来上网搜了半天,很多代码和讲解看完还是一知半解。而且包括百度百科在内,用eclipse一跑,全都有错。。。。。

于是决定还是自己搞吧。

在彻底理解了快速排序的思想后,写了如下自己能理解的代码:

 1     //快速排序
 2     void quickSort(int a[],int l,int r){
 3         //声明与初始化
 4         int i=l;
 5         int j=r;
 6         int key=a[i];//取出第一个元素作为基准
 7         
 8         //判断方法结束调用
 9         if(i>=j){
10             return;
11         }
12         
13         //一趟排序
14         while(i<j){
15             //从右向左与key比较
16             while(i<j&&key<=a[j]){
17                 j--;
18             }
19             //直到出现第一个key>a[j],两者交换
20             if(i<j){
21                 a[i]=a[j];
22                 a[j]=key;
23             }
24             
25             //从左向右与key比较
26             while(i<j&&key>=a[i]){
27                 i++;
28             }
29             //直到出现第一个key<a[i]
30             if(i<j){
31                 a[j]=a[i];
32                 a[i]=key;
33             }
34         }
35         
36         //此时有
37 //        a[i]=key;//因为我已经在while循环外声明了i和key,所以这里不需要再次赋值
38         
39         //递归对key左右子数组排序,a[i]不予考虑
40         quickSort(a,l,i-1);
41         quickSort(a,i+1,r);
42     }

博主刚毕业,还在找工作中,这是我的第一篇博文。

水平显然是菜鸟级别,也许连菜鸟都不是。。

很多写代码的规范还不懂,欢迎大家一起交流~

Java实现快速排序