排序演算法例子

2021-08-25 08:50:06 字數 1971 閱讀 2728

氣泡排序:

#include using namespace std;

//氣泡排序,時間複雜度o(n^2),穩定,比較次數最少n-1,最多n*(n-1)/2

void bubble_sort(int *list,int num)}}

}int main()

; bubble_sort2(arraylist,len);

for(int i=0;i快速排序

#include #include using namespace std;

//快速排序,最多比較n*(n-1)/2次,順序或者逆序時比較次數最多,不穩定

//最壞情況下,時間複雜度為o(n^2)

//最優情況下,時間複雜度o(nlogn)

//平均複雜度o(nlogn)

void quick_sort(int *data, int low, int high)

int i = low;

int j = high;

int temp = data[low];

while(i!=j)

//將第i個值放到對應的位置

data[j + 1] = temp;

}}int main()

; insert_sort(a,len);

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

return 0;

}

選擇排序:

#include #include using namespace std;

//選擇排序,不穩定,時間複雜度o(n^2)

//比較次數固定n(n-1)/2次

void select_sort(int *data,int num)

}swap(data[i],data[minindex]);

}}int main()

; select_sort(a,len);

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

return 0;

}

希爾排序:

#include #include using namespace std;

//希爾排序,時間複雜度o(n^2),不穩定

//最多比較n^1.5次

void shell_sort(int *data, int n)

data[j+increment]=temp;

}increment/=2; // 增量變為原來的一半

}}int main()

; shell_sort(a,len);

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

return 0;

}

歸併排序

#include #include #include using namespace std;

//歸併排序的最壞時間複雜度為o(nlogn),穩定

//歸併排序輔助函式,用於對左右有序的陣列進行合併

void merge(int* data, int l,int r,int *templist)

else

}while(j<=mid)//左半部分剩餘元素依次複製到臨時陣列中

while(k<=r)//若右邊有剩餘元素

for(i=l;i<=r;i++)

}void merge_sort(int* data,int l,int r,int *templist)

}int main()

; int templist[len];

memset(templist,0,sizeof(int)*len);

merge_sort(a,0,len-1,templist);

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

return 0;

}

Dinic演算法例子

寫法 1 用鄰接矩陣儲存各個流的起點終點 2 用bfs把圖分出層次 記錄到各個點需要流幾次 3 用dfs對圖找出增廣路進行流量擴充 注意反向流要記錄成容量為0的路徑,更新正向流時也要更新反向流 教材361頁 includeusing namespace std struct edge edge ed...

分治演算法 例子

分治策略 將問題分解成若干個小的子問題,每個子問題與大問題同型 所以裡面可以用遞迴 但規模更小 遞迴解決這些子問題 將子問題的解答合併,獲得大問題的解答 最大欄位和問題 include include include using namespace std int a 100 int maxsum ...

Python實現氣泡排序演算法 例子解釋

氣泡排序 顧名思義就是 較小的值 像泡泡一樣往上冒,大的值 往下沉。實現原理 依次將相鄰兩個數值進行比較,較小的數值移到左邊,較大的數值移到右邊,依次比較完第一輪後,最大的數值應該排在最右邊。然後再繼續重複的比較,直至無數值需要交換,此時排序完成。例子解釋 無序列表arr 7,6,5,3,9,2,8...