首页 > 学院 > 开发设计 > 正文

【黑马程序员】-Java基础学习-冒泡排序和选择排序和练习输出一个空心菱形

2019-11-14 15:26:44
字体:
来源:转载
供稿:网友

------- android培训、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 }

 显示的结果为:

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

 

 

  


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表