JAVA 蹣跚自學之 第六日 續 數組排序 之 選擇 冒泡

來源:互聯網
上載者:User

標籤:

1  選擇排序  

    原理   int[] arr = new int[] {2,4,21,44,10};

         數組的第一個元素 分別與其他的元素比較  如果比那個元素的值小 那麼兩個值就互換  都比較之後從而得到這個數組裡面的  那個最大值  這個最大值就在這個數組的0索引上 。現在我們找出了第一名 那麼 第二名怎麼找呢,道理很簡單了,就是把剩下的那些元素看作是一個新的數組 ,再重複上面的操作就會找出 第二名  ,以此類推。

       過程

                  arr[0]  比較------arr[1]         arr[1]  比較-------------arr[2]   arr[2]  比較-----arr[3]   arr[3]比較arr[4]

                            比較------arr[2]                  比較-------------arr[3]             比較-----arr[4]

                            比較------arr[3]                  比較-------------arr[4]

                            比較------arr[4]

    5個元素 只需要比較4次 ,那麼就是N個元素 需要比較N-1次 就可以了,也就是被比較的數 取到N-1 位上就可以了

                  用一個for 來實現   左側元素值的提取  (arr.length-1 是數組的最後一個角標位)

                                    for(int x=0;x<arr.length-1;x++)

                                           { arr[x]}

                 用第二for  來實現  右側 參與比較的元素的提取

                                     for (int y=x+1;y<arr.length;y++)

                                           {arr[y])

                if  實現比較            if(arr[x]<arr[y])

                 我們這裡利用^來實現  2個元素的置換

                                           arr[x]=arr[x]^arr[y] 

                                            arr[y]=arr[x]^arr[y]

                                            arr[x]=arr[x]^arr[y]   

 

我們整合代碼                         for(int x=0;x<arr.length-1;x++)

                                                 {        for (int y=x+1;y<arr.length;y++)

                                                              {   if(arr[x]<arr[y])

                                                                          {  

                                                                              arr[x]=arr[x]^arr[y]  ;

                                                                              arr[y]=arr[x]^arr[y] ;

                                                                              arr[x]=arr[x]^arr[y]  ;

                                                                             }

                                                                }

                                                     }

  冒泡排序  

    原理   int[] arr = new int[] {2,4,21,44,10};

            從數組的0角標開始 每每相鄰的2個元素相互比較  最值互換   這樣比較到最後   最值就出現在數組的末位。除去末位的元素  剩下的元素 右從0角標開始 相鄰的元素相互比較  最值互換    最後最值出現在倒數第二位 依次類推,完成排序。

    步驟      1  利用for 來實現  兩兩相鄰元素的提取

                              for(int x=0; x<arr.length-1;x++)

                                      {

                                              arr[x]   arr[x+1]

                                      }

                 2  if  實現比較    if  (arr[x]  <arr[x+1])

                 3 實現互換        arr[x]    =arr[x]^arr[x+1];

                                      arr[x+1] =arr[x]^arr[x+1];

                                      arr[x]     =arr[x]^arr[x+1];

                4  利用for  實現 一個數組需要比較多少次

                               for(int w=0;w<arr.length;w++)

    整合                for(int w=0;w<arr.length;w++)

                             {   for(int x=0;x<arr.length-1;x++)

                                      {   if(arr[x]<arr[x+1] )

                                                   {

                                                           arr[x]    =arr[x]^arr[x+1];

                                                           arr[x+1] =arr[x]^arr[x+1];

                                                           arr[x]     =arr[x]^arr[x+1];

                                                    }

                                          }

                               }

 

選擇排序與 冒泡排序的區別   選擇排序的最值是從 0角標開始排列的  冒泡排序的最值 是從末角標開始的

JAVA 蹣跚自學之 第六日 續 數組排序 之 選擇 冒泡

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.