詳細的冒泡排序、 很明白、

來源:互聯網
上載者:User

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 、 、、 、 、 、、 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.