Java实现快速排序等等

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

publicclassQuickSort{publicstaticvoidmain(String[]args){int[]arry={1,3,-7,2,70,-8,0};System.out.print(原数组如下\t:);for(inti:arry){System.out.print(i+\t);}System.out.println();quickSort(arry,2,5);//xuanze(arry);//charu(arry);//maopao(arry);System.out.print(快速排序后数组如下:);for(inti:arry){System.out.print(i+\t);}}publicstaticint[]quickSort(int[]arry,intleft,intright){/**快速排序:当今被认为最好的排序算法之一,基本思想:是将一个大的数组*分为2个小的数组,而每个小的数组的排序又继续分解为更小的问题,一致递归*下去,知道数组的大小最大为2。**/intt;if(leftright){intm=arry[left];inti=left;intj=right+1;System.out.println(初始时+i+\t+j+\t+m);while(true){//向右找大于m的书的索引while(i+1=right&&arry[++i]m);//向左找小于m的书的索引while(jleft&&arry[--j]m);//如果i=j退出循环if(i=j){System.out.println(break中+i++j+\t+m+\t+arry[i]+\t+arry[j]);break;}else{//交换i和j位置元素t=arry[i];arry[i]=arry[j];arry[j]=t;System.out.println(swap中+i++j+\t+m+\t+arry[i]+\t+arry[j]);}}System.out.println(j);arry[left]=arry[j];System.out.println(arry[j]);arry[j]=m;System.out.print(快速排序过程如下:);for(intx:arry){System.out.print(x+\t);}System.out.println();//对左边进行递归quickSort(arry,left,j-1);//对右边进行递归quickSort(arry,j+1,right);}returnarry;}publicstaticint[]xuanze(intarr[]){/**选择排序:将数组分为两部分,一部分从小到大已经排好序,一部分无序,*从无序中选取出最小的数值的下标,与等待排序的下标值交换也就是排好序的部分的最后,初始时候排好序的*那一部分没有一个值。*/intt;for(inti=0;iarr.length;i++){intm=i;for(intj=i+1;jarr.length;j++){if(arr[j]arr[m]){m=j;}}if(i!=m){t=arr[i];arr[i]=arr[m];arr[m]=t;}}returnarr;}publicstaticint[]charu(int[]arr){/**插入排序:将数组分为两部分,初始时首元素为一组,后面的元素为一组,*每次在后面的元素中选取下表最小的插入到前面部分适当位置。*/for(inti=1;iarr.length;i++){inttemp=arr[i];intj=i-1;while(temparr[j]){arr[j+1]=arr[j];j--;if(j==-1){break;}}arr[j+1]=temp;}returnarr;}publicstaticint[]maopao(int[]arr){/**冒泡排序:每一次选出一个最大(最小的放在相应的末尾位置)*/intt;for(inti=0;iarr.length;i++){for(intj=0;jarr.length-i-1;j++){if(arr[j]arr[j+1]){t=arr[j];arr[j]=arr[j+1];arr[j+1]=t;}}}returnarr;}}

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功