zoukankan      html  css  js  c++  java
  • 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 }

     显示的结果为:

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

      

  • 相关阅读:
    UVa 1451 Average (斜率优化)
    POJ 1160 Post Office (四边形不等式优化DP)
    HDU 3507 Print Article (斜率DP)
    LightOJ 1427 Substring Frequency (II) (AC自动机)
    UVa 10245 The Closest Pair Problem (分治)
    POJ 1741 Tree (树分治)
    HDU 3487 Play with Chain (Splay)
    POJ 2828 Buy Tickets (线段树)
    HDU 3723 Delta Wave (高精度+calelan数)
    UVa 1625 Color Length (DP)
  • 原文地址:https://www.cnblogs.com/soongkun/p/4881653.html
Copyright © 2011-2022 走看看