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 }

     显示的结果为:

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

      

  • 相关阅读:
    ASP.NET 2.0中使用webpart系列控件
    ASP.NET AJAX入门系列(11):在多个UpdatePanle中使用Timer控件(转)
    WebService SoapHeader的使用
    (转)对程序员职业的一些建议
    android组件间通信
    关于android library project
    (转)我6个月的学习编程经历:从”大齿怪“到“狂欢者”
    DOM的一个要注意的地方
    android的休眠对service,activity的影响
    java的字符串和char数组
  • 原文地址:https://www.cnblogs.com/soongkun/p/4881653.html
Copyright © 2011-2022 走看看