排序—冒泡排序,排序冒泡

來源:互聯網
上載者:User

排序—冒泡排序,排序冒泡

        在面試的時候偶爾會被問到排序的演算法,有時候也會被要求把排序演算法寫出來,可一直也沒當回事。直到前天面試的時候被要求當場寫出一個程式對給定的數組進行排序。當時本來想寫一個冒泡排序演算法,寫到最後才發現寫了一個不倫不類的排序程式,冒泡不冒泡、插入不插入,回來之後想著是需要好好研究一些這些排序演算法了,於是就決定把這幾種常用的排序演算法總結一下。

    排序要求:把長度為n的數組a按照從小到大的順序進行排序。

    冒泡排序思路:給定一個長度為n的數組a,迴圈n-1次,每次迴圈找出a[0]到a[n-i-1]中最大數的數,然後把該數放在a[n-1]的位置。

    如何找出a[0]到a[n-i-1]中的最大數?:迴圈一遍,比較a[i]和a[i+1]的大小,如a[i]<a[i+1],兩數交換位置,然後繼續判斷a[i+1]和a[i+2]的大小,以此迴圈結束。

排序樣本:       

原數組:                2、0、3、6、8、4、9、5、1、7、
第1次迴圈排序結果: 0、2、3、6、4、8、5、1、7、9、
第2次迴圈排序結果: 0、2、3、4、6、5、1、7、8、9、
第3次迴圈排序結果: 0、2、3、4、5、1、6、7、8、9、
第4次迴圈排序結果: 0、2、3、4、1、5、6、7、8、9、
第5次迴圈排序結果: 0、2、3、1、4、5、6、7、8、9、
第6次迴圈排序結果: 0、2、1、3、4、5、6、7、8、9、
第7次迴圈排序結果: 0、1、2、3、4、5、6、7、8、9、
第8次迴圈排序結果: 0、1、2、3、4、5、6、7、8、9、
第9次迴圈排序結果: 0、1、2、3、4、5、6、7、8、9、

 

public void myBubbleSort(int[] array) {        for (int i = 0; i < array.length-1; i++) {            for (int j = 0; j < array.length - i - 1; j++) {                if (array[j] > array[j + 1]) {                    int num = array[j];                    array[j] = array[j + 1];                    array[j + 1] = num;                }            }        }    }

 

注意兩次迴圈的範圍:

     外迴圈次數: n-1次,固定不變的,即使在n-m(0<m<n)之前已經完成排序(注意排序樣本中的7.8.9次迴圈),程式仍要迴圈n-m 到n-1。

     內迴圈次數: 根據外迴圈變化而變化,次數為  (n-i-1)+……+2++1



 

聯繫我們

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