通常的氣泡排序演算法只能解決指定型別的資料以及固定的公升序或者降序排列,而當我們學習了c++模板以及仿函式的之後,我們就可以寫乙個通用的冒泡演算法來處理不同型別資料以及想要排序的方式。
void bubblesort(int* array, size_t sz)
}}
這是通常的氣泡排序演算法,只能處理整型資料,以及公升序。下面我們就來實現通用的冒泡演算法。
template//仿函式,本質是函式物件,對()進行過載,功能類似於函式
struct less
};templatestruct greater
};template < class t,class compare=less>//使用模板引數,處理不同型別資料,以及指定排序方式,這裡預設降序
void bubblesort(t* array,int sz)
if (ischanged == false)//如果一次都沒交換,結束迴圈,提高程式效率
break; }
}
在這裡,我們利用模板來解決處理不同型別資料的問題,利用仿函式又稱函式類,本質是函式物件,不過對()進行了過載,功能類似與於函式,解決了不同排序型別的問題,並且在其中,對是否交換進行了判斷,以提高**程式的效率。來看程式執行結果。
先對整型資料進行公升序
接下來是降序排列:
氣泡排序演算法 C 氣泡排序演算法排序詳解
氣泡排序是最簡單的排序方法,理解起來容易。雖然它的計算步驟比較多,不是最快的,但它是最基本的,初學者一定要掌握。c 氣泡排序演算法的例項源 一些排序方法的 集錦,該函式模板使用冒泡法對集合元素進行排序,引數說明 collection 集合物件,集合物件必須提供 操作。element 集合元素,該引數...
氣泡排序 氣泡排序演算法優化
常用的排序演算法主要包括 1 插入排序 直接插入排序 希爾排序 2 交換排序 氣泡排序 快速排序 3 選擇排序 簡單選擇排序 堆排序快速排序 4 歸併排序其中,氣泡排序算是最簡單的一種排序演算法 public class bubble int temp 0 for int i 0 iarr j 1 ...
排序演算法 氣泡排序
一.氣泡排序的過程 公升值排序 1.將第乙個記錄的關鍵字與第二個記錄的關鍵字進行比較,若key 1 key 2 則交換。然後比較第二個與第三個,依此類推,直到第n 1個與第n個比較為止,第一趟排序完後,記錄最大的關鍵字會被排在最後面。2.將記錄的前n 1個關鍵字進行第二趟比較交換,直到前n 1個中最...