数组排序

 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 }

 安利小樊同学的笔记

上一篇:插槽的用途


下一篇:Linux安装mysql5.6.44