2017/12/30Java基础学习——排序算法の选择法与冒泡法的比较

 1 //题意要求:使用选择法、冒泡法将数组按从小到大的顺序排列
 2 public class HelloWorld {
 3     public static void main(String[] args) {
 4         //选择法排序的思路: 
 5         //把第一位和其他所有的进行比较,只要比第一位小的,就换到第一个位置来 
 6         //比较完后,第一位就是最小的 
 7         //然后再从第二位和剩余的其他所有进行比较,只要比第二位小,就换到第二个位置来 
 8         //比较完后,第二位就是第二小的 
 9         //以此类推,归纳总结形成for嵌套
10         System.out.println("由小到大排序选择法一:数组a");
11         int a [] = new int[]{18,62,68,82,65,9}; 
12         for (int i = 0; i < a.length - 1; i++) { //一共比较了(a.length-1)次
13             for (int j = i + 1; j < a.length; j++) {
14                 if(a[j] < a[i]){
15                     int miccle = a[i];
16                     a[i] = a[j];
17                     a[j] = miccle;
18                 }        
19             }                 
20         }
21           for (int i = 0; i < a.length; i++) {//输出用选择法排序的结果
22             System.out.print(a[i] + " ");
23         }
24         System.out.println();
25 //        冒泡法排序的思路: 
26 //        第一步:从第一位开始,把相邻两位进行比较 
27 //        如果发现前面的比后面的大,就把大的数据交换在后面,循环比较完毕后,最后一位就是最大的 
28 //        第二步: 再来一次,只不过不用比较最后一位 
29 //        以此类推,归纳规律如下        
30         System.out.println("用冒泡法从大到小排序");
31         int c [] = new int[]{18,62,68,82,65,9};
32         for (int i = 0; i < c.length - 1; i++) {//长度为c.length的数组需要循环(c.length - 1)轮
33             for (int j = 0; j < c.length - 1 - i ; j++) {
34                 if(c[j] < c[j + 1]){
35                     int mic = c[j];
36                     c[j] = c[j + 1];
37                     c[j + 1] = mic;
38                 }
39             }
40         }
41         for (int k = 0; k < c.length; k++) {//输出冒泡法排序后的结果
42             System.out.print(c[k] + " ");
43         }
44     }
45 }

详细规律请参考链接: 选择法排序 和 冒泡法排序

原文地址:https://www.cnblogs.com/lijiehua/p/8148672.html