測試**:
#ifndef optional_01_bubble_sort_sorttesthelper_h
#define optional_01_bubble_sort_sorttesthelper_h
#include #include #include #include #include using namespace std;
namespace sorttesthelper
// 生成乙個近乎有序的陣列
// 首先生成乙個含有[0...n-1]的完全有序陣列, 之後隨機交換swaptimes對資料
// swaptimes定義了陣列的無序程度
int *generatenearlyorderedarray(int n, int swaptimes)
return arr;
}// 拷貝整型陣列a中的所有元素到乙個新的陣列, 並返回新的陣列
int *copyintarray(int a, int n)
// 列印arr陣列的所有內容
templatevoid printarray(t arr, int n)
// 判斷arr陣列是否有序
templatebool issorted(t arr, int n)
// 測試sort排序演算法排序arr陣列所得到結果的正確性和演算法執行時間
templatevoid testsort(const string &sortname, void (*sort)(t, int), t arr, int n)
}#endif //optional_01_bubble_sort_selectionsort_h
插入排序**:
#ifndef optional_01_bubble_sort_insertionsort_h
#define optional_01_bubble_sort_insertionsort_h
#include #include using namespace std;
templatevoid insertionsort(t arr, int n)
return;
}#endif //optional_01_bubble_sort_insertionsort_h
氣泡排序以及優化**:
#include #include #include "sorttesthelper.h"
#include "selectionsort.h"
#include "insertionsort.h"
using namespace std;
// 第一版bubblesort
templatevoid bubblesort( t arr , int n)
// 優化, 每一趟bubble sort都將最大的元素放在了最後的位置
// 所以下一次排序, 最後的元素可以不再考慮
n --;
}// 第二版bubblesort,使用newn進行優化
templatevoid bubblesort2( t arr , int n)
n = newn;
}while(newn > 0);
}int main() {
int n = 20000;
// 測試1 一般測試
cout測試結果:
基本排序及其優化 冒泡 選擇 插入
話不多說,小知識先走一波 如何不使用額外變數完成陣列不同位置值的交換?不使用第三個變數,交換陣列不同的數值 param arr param x param y public static void swap int arr,int x,int y 注 在陣列這樣做有些地方會出現bug,比如快排中,陣...
python實現氣泡排序及其優化
氣泡排序是排序演算法中比較基礎的部分,簡單原理就是 將數量大小比作輕重不同的氣泡,輕的氣泡會冒到重的氣泡之上的思想 最原始的排序 如下 def bubblesort numlist ifnot len numlist return for i in range len numlist for j i...
氣泡排序及其優化(C 實現)
include includeusing namespace std 氣泡排序的特點 每一輪冒泡過後,在過去一輪遍歷中訪問過的元素中的最大元素 一定會到達它最終應當處在的位置。基礎版本的氣泡排序 雙迴圈。外層迴圈控制冒泡次數,內層迴圈實現每一輪的 冒泡處理 先進行元素比較,再進行元素交換。void ...