程式設計基礎 排序(冒泡 快速 合併)

2021-09-29 15:26:35 字數 653 閱讀 3224

氣泡排序:

#include

using

namespace std;

intmain()

for(

int i=

0;i1;i++)}

}for

(int i=

0;i)return0;

}

氣泡排序: 穩定的排序方法

平均情況:o(n^2)

最好情況:o(n)

最壞情況:o(n^2)

輔助空間:o(1)

快速排序(分治法的應用)(不穩定的排序演算法)

核心思想:

通過一次劃分找到兩指標碰頭的位置,以此為界,將元素分成兩部分,左邊全為小於邊界值的,右邊全為大於邊界值的,遞迴的劃分左右兩部分便可將元素排序。

劃分方法:(以公升序排為例)

設定兩指標分別指向陣列元素開頭和結尾位置,比較兩元素的大小。

左小右大:尾指標左移,繼續比較大小

左大右小:手指標右移,繼續比較大小

直到兩指標碰頭為止

快速排序:

平均情況:o(nlogn)

最好情況:o(nlogn)

最壞情況:o(n^2)

輔助空間:o(logn)—o(n) 需用棧實現遞迴

氣泡排序,快速排序

氣泡排序 氣泡排序 英語 bubble sort 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。...

氣泡排序 快速排序

一 氣泡排序 演算法步驟 以n個數排序,從小到大排為例說明。1 待排序數中,從第1個數開始,每個數與它後面的數比較,若逆序則交換。完成後則最大數排到最後,待排序數個數減少乙個。2 若待排序數個數為1,則它就是最小數,排在首位。否則,回到第 1 步。具體講解如下 第一趟 第1 2個數比較,若逆序則交換...

氣泡排序,快速排序

實現思路 每次從陣列裡面選出乙個最大值,一直遞迴 它的最優時間複雜度為o n 正序,陣列排好情況下 最糟糕時間複雜度為o n 2 反序 陣列排序剛好相反 function bubblesort arr return arr 返回最終結果 arrtest 12,43,54,33,23,14,44,53...