Java实现快速排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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实现快速排序的主要内容,如果未能解决你的问题,请参考以下文章