我們先來看看冒泡排序的算法是如何定義的:
冒泡算法
冒泡排序(BubbleSort),是一種計算機科學領域的較簡單的排序算法。它重復地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從A到Z)錯誤就把他們交換過來。走訪元素的工作是重復地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。這個算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”。
Java編碼實現
了解了冒泡排序的基本定義之后,根據其思想我們來根據題主的要求看看如何用Java實現冒泡排序算法,代碼如下圖:
基本原理就是如下的邏輯走向:
執行后輸出如下:
有沒有發現什么問題?是不是到了第6次已經完成排序了?后面的是不是就屬于浪費了?所以我們需要優化一下,當他的順序已經排序完畢了就不再進行排序了,優化后的代碼如下:
執行后輸出:
可以看出來只執行了6次排序。
算法復雜度
那么冒泡算法的復雜度是怎樣的呢?相信大家看到這已經基本上可以算出來了:
時間復雜度:兩層循環O(n2);
空間復雜度:還是原來的數組,沒有開辟新的內存空間,所以是O(n)。