冒泡排序和选择排序
冒泡排序(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 }
显示的结果为:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *