归并排序2(选第一个数为基准数)
2013-04-03 09:08
134 查看
package quicksort; public class QuickSortTest { public void quickSort2(int[] a,int left,int right) { int key=a[left]; if(left<right) { int i=left,j=right; while(i<j) { while(i<j && a[j]>=key) j--; if(i<j) swap(a,i++,j); while(i<j && a[i]<=key) i++; if(i<j) swap(a,i,j--); } System.out.println("i "+i); quickSort2(a,left,i-1); quickSort2(a,i+1,right); } } public void swap(int[] a, int i, int j) { int temp=a[i]; a[i]=a[j]; a[j]=temp; } public void quickSort(int[] a,int left,int right) { int key=a[left]; //选择待排序数组的第一个数为基准数 if(left<right) { int i=left,j=right; while(i<j) { while(i<j && a[j]>=key) //从后往前找,与基准数key作比较 j--; if(i<j) a[i++]=a[j]; while(i<j && a[i]<=key) i++; if(i<j) a[j--]=a[i]; } a[i]=key; //返回调整后基准数的位置i quickSort(a,left,i-1); quickSort(a,i+1,right); } } public void print(int[] arr) { for(int i=0;i<arr.length;i++) { if(i!=arr.length-1) System.out.print(arr[i]+" "); else System.out.println(arr[i]); } } public static void main(String[] args) { //int[] arr={24,65,70,44,43,98,59,54,82,87,53,73,59,3,73,49}; int[] arr={24,65,70,44,43,98}; QuickSortTest qst=new QuickSortTest(); qst.print(arr); //qst.quickSort(arr, 0,arr.length-1); qst.quickSort2(arr, 0,arr.length-1); qst.print(arr); } }
相关文章推荐
- 快速排序 和 把一个无序的整形数组分成两部分(以数组第一个数为基准进行划分)
- 输出最小整数对,以第一个数为主键
- 三个三位数,第一加第二等于第三,三个数所有各个位的数都不相同(1-9),第二个数是第一个数的两倍,求三个数
- 百度在人工智能基准测试中取得了全球第一!
- 中国金融博物馆书院 读书会第一至二十八期完整书单
- 统计s="hello alex alex hello haiyan cc haiyan com"中每个单词的个数
- 教科书般的推广,苹果商店(App Store)IOS App不花钱历时4天从刚上线推广到收费娱乐榜第一
- 游戏中人体皮肤实时渲染第一弹
- 中国第一计算机编程高手横瓜的天才求职之路异常艰辛,天妒奇才呀
- (三) u-boot 启动分析_第一阶段
- 第三届蓝桥杯预赛真题_第一题_两种微生物 X 和 Y
- HDU 6069-Counting Divisors(多校训练第四场->区间质因数个数)
- 程序员写程序第一大注意点--细心
- HTML_用参数判断轮播-小标签-文字图片轮播-第一挪到最后的无缝滚动轮播
- hadoop日志分析系统二 第一部分 利用任务调度系统定期的把web系统所产生的日志文件导入到hdfs中
- ArcEngine 设置要素图层的基准高(Base Height),使其紧贴地形TIN
- 第一部分:开发前的准备-第二章 基础入门
- hdu5791 Two(dp求公共子序列个数)
- Factorial Problem in Base K 质因数分解,然后求阶乘的质因数个数
- C++Primer Plus(第六版) 第十四章 第一题