演算法 蠻力法之選擇排序和氣泡排序c 實現

2022-07-04 05:42:11 字數 1650 閱讀 2577

這次實現的是蠻力法中的兩個例子,選擇排序法和氣泡排序法,使用的編譯環境是vs2013,下面對這兩個演算法做乙個簡單介紹,然後是兩個演算法的c++實現**。

選擇排序法比較的範圍是整個列表,每次掃瞄結束找出最小的乙個元素一次放在前面的位置;而氣泡排序法每次是將相鄰兩個元素進行比較,將較大的元素放在後面,這樣一次掃瞄結束後就將當前最大的那個元素放在了列表的後面。

兩個排序方法的演算法如下:

選擇排序法

selectionsort(a[0....n-1])

//輸入:乙個可排序陣列a[0....n-1],

//輸出:公升序排序的陣列a[0....n-1]

for    i  <—0  to   n-2   do

min  <—  i;

for j <—  i+1  to  n-1    do

if a[j]  <  a[min]     min  <—j;

swap a[i] and a[min];

該演算法的輸入規模就是元素的個數n,基本操作就是if語句中比較的步驟:a[j]  <  a[min],比較的執行次數為:(n-1)n/2,也就是θ(n2)。

氣泡排序演算法:

bubblesort(a[0....n-1])

//輸入:乙個可排序陣列a[0....n-1]

//輸出:公升序排序的陣列a[0....n-1]

for    i  <—0  to   n-2   do

for j <—  0  to  n-2-i   do

if a[j+1]swap a[j+1]anda[j]

該演算法的時間複雜度和選擇排序的時間複雜度一樣都是θ(n2)。

#include using

namespace

std;

void selectionsort(int isort, int

n);void bubblesort(int isort, int

n);void swap(int &a, int &b);

//-------------------主函式-------------------

intmain()

getchar();

//selectionsort(a, 10);

//這裡傳遞的實參是陣列名,

//也就是將位址進行傳遞,這樣被呼叫的函式就能夠改變陣列a的值。

bubblesort(a, 10

);

for (int i = 0; i < 10; i++)

getchar();

return1;

}//-------------------選擇排序法-------------------

void selectionsort(int isort,int

n) }

swap(isort[i], isort[min]);

}}//

-------------------氣泡排序法-------------------

void bubblesort(int isort, int

n) }

}}//

-------------------交換元素-------------------

void swap(int &a, int &b)

演算法筆記 008 選擇排序和氣泡排序 蠻力法

目錄 1 問題描述 2 解決方案 2.1 選擇排序原理簡介 2.2 具體編碼 選擇排序 2.3 氣泡排序原理簡介 2.4 具體編碼 氣泡排序 給定乙個可排序的n元素序列 例如,數字 字元和字串 將它們按照非降序方式重新排列。選擇排序開始的時候,我們從第乙個元素開始掃瞄整個列表,找到它的最小元素,然後...

演算法筆記 008 選擇排序和氣泡排序 蠻力法

目錄 1 問題描述 2 解決方案 2.1 選擇排序原理簡介 2.2 具體編碼 選擇排序 2.3 氣泡排序原理簡介 2.4 具體編碼 氣泡排序 給定乙個可排序的n元素序列 例如,數字 字元和字串 將它們按照非降序方式重新排列。選擇排序開始的時候,我們從第乙個元素開始掃瞄整個列表,找到它的最小元素,然後...

選擇排序法和氣泡排序法

例題 自定義函式,從鍵盤輸入n個數,對它進行從小到大的排序,要求從主函式輸出排序的結果。方法一 氣泡排序法 include define n 10 using namespace std int main void bubble sort int a 氣泡排序法分析 先從第乙個元素開始,各位相鄰元素...