Java实现快速排序
找工作时笔试做的一塌糊涂,连快速排序都不会了。
回来上网搜了半天,很多代码和讲解看完还是一知半解。而且包括百度百科在内,用eclipse一跑,全都有错。。。。。
于是决定还是自己搞吧。
在彻底理解了快速排序的思想后,写了如下自己能理解的代码:
public void sort(int[] a,int l,int r){ //初始化参数,快排基准key选取的是数组中第一个元素 int i=l;//l=0 int j=r;//r=a.length-1 int key=a[i]; //结束调用条件 if(i>=j){ return; } //每一趟排序 while(i<j){ /** * 从左到右 */ //只要i<j且a[j]>=key,就j-- while(i<j&&a[j]>=key){ j--; } //直到a[j]<key时,a[j]交换到a[i]的位置 if(i<j){ a[i]=a[j]; } /** * 从右到左 */ //只要i<j且a[i]<=key,就i++ while(i<j&&a[i]<=key){ i++; } //当a[i]>key时,a[i]交换到a[j]的位置 if(i<j){ a[j]=a[i]; } } //此时有 a[i]=key; //以a[i]为界,数组a分成左右两部分,分别递归调用自身 sort(a,l,i-1); sort(a,i+1,r); }
博主刚毕业,还在找工作中,这是我的第一篇博文。
水平显然是菜鸟级别,也许连菜鸟都不是。。
很多写代码的规范还不懂,欢迎大家一起交流~