快速、插入和冒泡排序(java版-代码篇)

 1 import java.util.Random;
 2 public class Test
 3 {
 4     public static void main(String[] arg){
 5         Random r=new Random();
 6         int[] arrs=new int[10];
 7         for(int i=0;i<arrs.length;i++){
 8             arrs[i]=r.nextInt(50);//随机生成排序数
 9         }
10 
11         show(arrs);//排序前
12         System.out.println("");//换行
13 
14         quick_sort(arrs,0,arrs.length);//快速排序方法
15         insert_sort(arrs);//插入排序
16         bubbling_sort(arrs);//冒泡排序
17 
18         show(arrs);//排序后
19 
20 
21     }
22 
23     //显示
24     private static void show(int[] arrs){
25         for(int i=0;i<arrs.length;i++){
26             if(i<arrs.length-1){
27                 System.out.print(arrs[i]+",");
28             }else{
29                 System.out.print(arrs[i]);
30             }
31         }
32     }
33 
34     //快速排序
35     private static void quick_sort(int[]arrs,int left,int right){
36         if(left<right){
37             int i=left;
38             int j=right-1;
39             int middle=arrs[(left+right)/2];
40 
41             while(true){
42                 while(i<right && arrs[i]<middle){
43                     i++;
44                 }
45                 while(j>0 && arrs[j]>middle){
46                     j--;
47                 }
48                 if(i==j){
49                     break;
50                 }
51                 
52                 //设变量交换两数
53                 int temp=0;
54                 temp=arrs[i];
55                 arrs[i]=arrs[j];
56                 arrs[j]=temp;
57 
58                 if(arrs[i]==arrs[j]){
59                     j--;
60                 }
61 
62             }
63             quick_sort(arrs,left,i);
64             quick_sort(arrs,i+1,right);
65         }
66     }
67 
68     //插入排序
69     private static void insert_sort(int[] arrs){
70         for(int i=0;i<arrs.length;i++){
71             for(int j=i;j>0&&arrs[j]<arrs[j-1];j--){
72                 /*int temp=0;
73                 temp=arrs[j];
74                 arrs[j]=arrs[j-1];
75                 arrs[j-1]=temp;*/
76 
77                 //不设变量的交换
78                 arrs[j]=arrs[j]+arrs[j-1];
79                 arrs[j-1]=arrs[j]-arrs[j-1];
80                 arrs[j]=arrs[j]-arrs[j-1];
81             }
82         }
83     }
84     
85     //冒泡排序
86     private static void bubbling_sort(int[] arrs){
87         for(int i=0;i<arrs.length;i++){
88             for(int j=0;j<arrs.length;j++){
89                 if(arrs[i]<arrs[j]){
90                     arrs[i]=arrs[i]+arrs[j];
91                     arrs[j]=arrs[i]-arrs[j];
92                     arrs[i]=arrs[i]-arrs[j];
93                 }
94             }
95         }
96     }
97 }

运行结果:

原文地址:https://www.cnblogs.com/comrd/p/3245280.html