這次實現的是蠻力法中的兩個例子,選擇排序法和氣泡排序法,使用的編譯環境是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 usingnamespace
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 氣泡排序法分析 先從第乙個元素開始,各位相鄰元素...