Java基础学习-冒泡排序和选择排序和练习输出一个空心菱形

冒泡排序和选择排序

  冒泡排序(BubbleSort)的意思是,按照顺序依次将两个元素比较大小,按照要求把大数上浮或者下沉。每捋一次,就把选择到的最大的或者最小的放到底部了。有限次后,就把所有的数都按照一个方向排列整齐了。
 
 1 package blog;
 2 
 3 public class sortarray {
 4 
 5     public static void main(String[] args) {
 6         //定义一个数组
 7         int[] shuzu={8,74,54,48,56,52,45,35,566,49};
 8         //冒泡排序,外循环是数组的长度-1.两两比较,要翻转的次数是数组的长度-1个。
 9         for(int i=0;i<shuzu.length-1;i++){  
10             //内循环 因为是当前与后一个比较所以是length-1,整体翻i次,应该总次数-i。
11             for(int j=0;j<shuzu.length -i-1;j++){
12                 if(shuzu[j]>shuzu[j+1]){
13                     //交换两个数组变量
14                     shuzu[j+1]=shuzu[j+1]^shuzu[j];
15                     shuzu[j]=shuzu[j+1]^shuzu[j];
16                     shuzu[j+1]=shuzu[j+1]^shuzu[j];
17                 }
18             }
19             
20         }
21         
22         //遍历数组
23         for (int i : shuzu) {  
24             System.out.println(i);  
25         } 
26     }
27 
28 }

直接选择排序(Straight Select Sorting)的原理也很简单,就是第一遍把数组最小的值挑出来放到数组的第一个元素中,第二遍又把剩下的元素最小的放到第二个元素中。继续下去,有限次后。把数组里面的元素按照从小到达排列好了。
 

 1 package blog;
 2 
 3 public class sortjava2 {
 4 
 5     public static void main(String[] args) {
 6         // 
 7         int[] shuzu={8,74,54,48,56,52,45,35,566,49};
 8         //直接选择排序,外循环是数组的长度-1.重复的次数应该是数组的长度-1。
 9                 for(int i=0;i<shuzu.length;i++){  
10                     
11                     //内循环 要把未确定最小的数都再筛选一遍。所以次数应该小于数组长度-i。
12                     for(int j=i+1;j<shuzu.length;j++){
13                         if(shuzu[i]>shuzu[j]){
14                             int a=shuzu[i];
15                             shuzu[i]=shuzu[j];
16                             shuzu[j]=a;
17                             }
18                     
19                     }
20                 }
21                     //遍历数组
22                     for (int c : shuzu) {  
23                         System.out.println(c);  
24                     } 
25         }
26     
27 }

 下面是练习输出一个空心菱形的代码:

 1 package test;
 2 
 3 /**
 4  *  内容是输出一个空心菱形
 5  * @author 瞎猫碰到死老虎
 6  *
 7  */
 8 
 9 public class LingXing {
10 
11     public static void main(String[] args) {        
12         int n=15;
13         lingxing(n);
14 
15     }
16     
17     //输出一个n行的菱形
18     public static void lingxing(int n){
19         //先输出上半部分
20         for(int i=0;i<n;i++){    //输出n行
21             for(int j=0;j<n+i;j++){  //每行打印n+i字符
22                 
23                 if(j==n+i-1||j==n-1-i){ //如果是最后一个字符或对称的位置,则显示*号
24                     System.out.print("*");
25                 }else{
26                     System.out.print(" ");
27                 }
28                 
29             }
30             System.out.println();
31         }
32     
33         //输出下部
34         for(int i=0;i<n-1;i++){     //输出n-1行
35             for(int j=0;j<2*(n-1)-i;j++){    //每行打印2*(n-1)-i个字符
36                 
37                 if(j==2*(n-1)-i-1||j==i+1){   //如果是最后一个字符或对称的位置,则显示*号
38                     System.out.print("*");
39                 }else{
40                     System.out.print(" ");
41                 }
42                 
43             }
44             
45             System.out.println();
46         }
47         
48     }
49 
50     
51 
52 }

 显示的结果为:

              *
             * *
            *   *
           *     *
          *       *
         *         *
        *           *
       *             *
      *               *
     *                 *
    *                   *
   *                     *
  *                       *
 *                         *
*                           *
 *                         *
  *                       *
   *                     *
    *                   *
     *                 *
      *               *
       *             *
        *           *
         *         *
          *       *
           *     *
            *   *
             * *
              *
 

  

原文地址:https://www.cnblogs.com/soongkun/p/4881653.html