import java.util.Scanner;
public class maopao {
public static void main(String []arg){
Scanner input=new Scanner(System.in);
System.out.print("輸入 你要排序的數個數");
int num=input.nextInt(); // 要對幾個數進行排序、 、
int [] shu=new int[num]; //接收了一個數以後 new個數組 、 、
for (int i = 0; i < num;i++ )
{
System.out.print("請輸入第" + (i + 1) + "個數");
shu= input.nextInt();
} //通過 for迴圈 接收排序的個數 、 、、 、 、
for (int i = 0; i < shu.length-1; i++) {
for (int j = 0; j <shu.length-i-1;j++ )
{
if(shu[j]>shu[j+1]){
int tem = shu[j];
shu[j] = shu[j + 1];
shu[j + 1] = tem;
}
} //這就是冒泡排序的 。 、 二重迴圈 、 、 、 、
}
System.out.print("排序後的是、、、"); //排完序後列印出來 、、 、
for(int i=0;i<shu.length;i++){
System.out.print(shu+" ");
}
}
}
首先 其實原理就是、
它是一個二重迴圈 、 、 外層迴圈控制比較多少輪、內層控制比較的次數、、
int j = 0; j <shu.length-i-1;j++ 他這個條件次數隨著外層的 i 而變得 、、
其實目的就是每外層迴圈一次就找出當前最大數、、放到最後 、這樣的話我們比較(數的個數-1)次就行了、找出一個數(一次大迴圈 、)、控制次數減1 、然後用內迴圈控制shu.length-i-1 控制、、、
好吧 、 、 、 就舉個例子:
例如: 我們找5個數、
23,90,9,25,16,(我們接收資料的時候下標是0,1,2,3,4)
當第一個數大於第二個數時:就交換兩個數 、
需要知道的是:每 i 迴圈 一次 、 j就迴圈shu.length-i-1次 。 。當然 i是越來越大的 、、而 內迴圈的迴圈次數越來越少 、、 的
當 i=0時、
j=0
一開始shu[j]=23; shu[j+1]=90; (下標是0的時候第一個數)
j<shu.length-i-1=5-0-1=4 ,符合條件
他是不執行 if的;
23,90,9,25,16
這時候j++
j就變成 1 了, (下標是1的時候第二個數)
j<shu.length-i-1=5-0-1=4 ,符合條件
這時候shu[j]=90;shu[j+1]=9
它執行 if 語句、
shu[j]=9;shu[j+1]=90;
23,9,90,25,16
這時候j++
j就變成 2 了, (下標是2的時候第三個數)
j<shu.length-i-1=5-0-1=4 ,符合
這時候shu[j]=90;shu[j+1]=25
他還執行if 語句、
這時候shu[j]=25;shu[j+1]=90
23,9,25,90,16
這時候j++
j就變成 3 了, (下標是3的時候第四個數)
j<shu.length-i-1=5-0-1=4 ,符合
這時候shu[j]=90;shu[j+1]=16
他還執行if 語句、
這時候shu[j]=16;shu[j+1]=90
23,9,25,16,90
這時候j++
j<shu.length-i-1=5-0-1=4 ,不符合、、、、
跳出 j 循 環 、
23,90,9,25,16
23,9,90,25,16
23,9,25,90,16
23,9,25,16,90
i=1; 找出了第二個大的 、 、
內層的條件
j<shu.length-i-1=5-1-1=3
只 迴圈 3次 、 、
根本 比較不到最後一個 、 、 、
9,23,25,16,90
9,23,25,16,90
9,23,16,25,90
i=2; 找出了第三個大的 、 、
內層的條件
j<shu.length-i-1=5-2-1=2
只 迴圈 2次 、 、
9,23,16,25,90
9,16,23,25,90
i=3; 找出了第四個大的 、 、i < shu.length-1=i<5-1=4; i<4
內層的條件
j<shu.length-i-1=5-3-1=1
只 迴圈 1次 、 、
9,16,23,25,90 i++等於4 跳出迴圈 、 、 、 、、、 、
得理解以後 、 、在寫代碼 、 、、
沒事 debug 、 、、 debug 、 、、 、 、 、、