1 public class ccc { 2 public void testSort1(int[] a){//选择排序 3 int length = a.length; 4 5 for(int i = 0;i<length-1;i++){ 6 int temp = a[i]; 7 int pos=i; 8 for(int j =i+1;j<length;j++){ 9 if(a[j]<temp){ 10 temp = a[j];//得到这趟最小 11 pos = j;//这趟最小的索引 12 } 13 } 14 a[pos]= a[i];//元素赋值交换 15 a[i] = temp; 16 } 17 // System.out.println(Arrays.toString(a)); 18 } 19 20 public void testSort2(int[] a){//冒泡排序 21 int length = a.length; 22 23 for(int i = 0;i<length-1;i++){ 24 25 for(int j = 0;j<length-i-1;j++){ 26 if(a[j+1]<a[j]){ //相邻的交换 确定出最后一个是最大的 27 int temp = a[j]; 28 a[j] = a[j+1]; 29 a[j+1] = temp; 30 } 31 } 32 } 33 // System.out.println(Arrays.toString(a)); 34 } 35 36 public void testSort3(int[] a,int l, int r){//快速排序 37 38 if(l<r){ 39 int i =l,j=r,temp=a[l]; 40 41 while(i<j){ 42 while(i<j && a[j]>temp){//后面 43 j--; 44 } 45 if(i<j){ 46 a[i++] = a[j];//交换到1上 然后i还变成2 47 } 48 49 while(i<j && a[i]<temp){//前面 50 i++; 51 } 52 if(i<j){ 53 a[j--] = a[i]; 54 } 55 } 56 57 a[i] = temp;//此时必是i==j 58 testSort3(a,l,i-1);//分治左边 59 testSort3(a,i+1,r);//分治右边 60 } 61 62 63 } 64 65 public static void main(String[] args) { 66 ccc c = new ccc(); 67 int[] a = {2,6,3,1,5}; 68 // c.testSort1(a); 69 // c.testSort2(a); 70 c.testSort3(a,0,4); 71 System.out.println(Arrays.toString(a)); 72 } 73 }
原文:https://www.cnblogs.com/gezi1007/p/13210933.html