------- android培訓(xùn)、java培訓(xùn)、期待與您交流! ----------
冒泡排序和選擇排序
冒泡排序(BubbleSort)的意思是,按照順序依次將兩個(gè)元素比較大小,按照要求把大數(shù)上浮或者下沉。每捋一次,就把選擇到的最大的或者最小的放到底部了。有限次后,就把所有的數(shù)都按照一個(gè)方向排列整齊了。
1 package blog; 2 3 public class sortarray { 4 5 public static void main(String[] args) { 6 //定義一個(gè)數(shù)組 7 int[] shuzu={8,74,54,48,56,52,45,35,566,49}; 8 //冒泡排序,外循環(huán)是數(shù)組的長度-1.兩兩比較,要翻轉(zhuǎn)的次數(shù)是數(shù)組的長度-1個(gè)。 9 for(int i=0;i<shuzu.length-1;i++){ 10 //內(nèi)循環(huán) 因?yàn)槭钱?dāng)前與后一個(gè)比較所以是length-1,整體翻i次,應(yīng)該總次數(shù)-i。11 for(int j=0;j<shuzu.length -i-1;j++){12 if(shuzu[j]>shuzu[j+1]){13 //交換兩個(gè)數(shù)組變量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 //遍歷數(shù)組23 for (int i : shuzu) { 24 System.out.PRintln(i); 25 } 26 }27 28 }
直接選擇排序(Straight Select Sorting)的原理也很簡單,就是第一遍把數(shù)組最小的值挑出來放到數(shù)組的第一個(gè)元素中,第二遍又把剩下的元素最小的放到第二個(gè)元素中。繼續(xù)下去,有限次后。把數(shù)組里面的元素按照從小到達(dá)排列好了。
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 //直接選擇排序,外循環(huán)是數(shù)組的長度-1.重復(fù)的次數(shù)應(yīng)該是數(shù)組的長度-1。 9 for(int i=0;i<shuzu.length;i++){ 10 11 //內(nèi)循環(huán) 要把未確定最小的數(shù)都再篩選一遍。所以次數(shù)應(yīng)該小于數(shù)組長度-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 //遍歷數(shù)組22 for (int c : shuzu) { 23 System.out.println(c); 24 } 25 }26 27 }
下面是練習(xí)輸出一個(gè)空心菱形的代碼:
1 package test; 2 3 /** 4 * 內(nèi)容是輸出一個(gè)空心菱形 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 //輸出一個(gè)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){ //如果是最后一個(gè)字符或?qū)ΨQ的位置,則顯示*號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個(gè)字符36 37 if(j==2*(n-1)-i-1||j==i+1){ //如果是最后一個(gè)字符或?qū)ΨQ的位置,則顯示*號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 }
顯示的結(jié)果為:
* * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * *
新聞熱點(diǎn)
疑難解答
圖片精選