氣泡排序演算法 一

2021-09-12 04:15:43 字數 1466 閱讀 9340

一.如何衡量乙個排序演算法的優劣

1.演算法的執行效率

2.演算法的內耗消耗:通過空間複雜度來衡量 (原地排序:特指空間複雜度為o(1)的排序演算法)

3.排序演算法的穩定性

若待排序的集合中存在值相等的元素,經過排序之後,相等元素之間原有的順序是否改變,若未改變,則此稱穩定性排序

(需求:如何按照金額排序後的資料,時間也是有序的?相同金額的訂單按照時間順序排序。

解決:先按照時間順序排序一次,再按照金額進行穩定性的排序。)

二.排序分類

1.內部排序:排序過程無需借助外部儲存器(如磁碟),所有排序操作均在記憶體中完成。預設說的排序都是內部排序

2.外部排序:若參與排序的元素過多,資料量過大,記憶體放不下,需要借助外部儲存器來進行排序,

如桶排序。

無論是內部排序還是外部排序,最終資料的排序一定在記憶體中進行。

三.交換排序之一----氣泡排序

氣泡排序只會操作相鄰的兩個元素。每次對相鄰的兩個元素做大小比較,看是否滿足大小關係。

一次冒泡至少會讓乙個元素移動到最終位置(冒泡)

輸入:4,5,6,1,2,3 (要求按照公升序排序)

輸出:1,2,3,4,5,6

演算法的執行效率

最好情況:資料集本身就是乙個有序集合,o(n)

最壞情況:資料集完全逆序,o(n^2)

平均情況:o(n^2)

演算法的記憶體消耗:o(1),無需開闢新的空間,僅僅是原有資料做交換。

氣泡排序是乙個原地排序演算法。

演算法的穩定性

氣泡排序由於相鄰元素發生大小關係變換才會交換次序,所以當兩個元素大小相等時,

並不會改變其相對順序。

氣泡排序的優化

package data.sort;

public

class

bubblesort

;bubblesort

(arr)

;arrprint

(arr);}

public

static

void

bubblesort

(int data)

for(

int i=

0;iif(

!flag)}}

public

static

void

arrprint

(int data)

}}

排序演算法 一 氣泡排序

排序的演算法有很多,例如直接插入排序,希爾排序,氣泡排序,選擇排序,快速排序,堆排序等等。最簡單基礎就是氣泡排序了,關於排序hi有乙個系列。今天是第一篇,主要講氣泡排序演算法思想以及從各個方面對它進行優化。氣泡排序 原理舉例 設陣列長度為n。1 比較相鄰的前後二個資料,如果前面資料大於後面的資料,就...

排序演算法(一) 氣泡排序

排序思路 樣例 1.從首位元素開始,前後元素相比較,保證 小在前 大在後 逐個元素向後遞推。一遍結束後,最大元素將位於排序末位。16 35 9 35 5 35 20 35 結果 2.因為最大元素已經排位完畢,所以不考慮末位最大元素,從頭開始,再做一輪排序。排序範圍 結果 可以看出,第二大元素已經排至...

排序演算法(一)氣泡排序

氣泡排序 bubble sort,台灣譯為 泡沫排序或氣泡排序 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。以將陣列 number n 中的n個數從小到大排序為例 ...