template<class TYPE>
void bubble_sort(TYPE* array,unsigned int n){
while(n>0){
for(unsigned int pos=1;pos<n;pos+=1){
if(*(array+pos)<*(array+pos-1))
Swap(*(array+pos),*(array+pos-1));
}
n--;}
}
如同理論,實作也是簡單易懂。其中,Swap是交換兩個數的函數,我是如此寫的:
template<class TYPE>
inline void Swap(TYPE& a,TYPE& b){
TYPE tmp=a;
a=b;
b=tmp;}
顯而易見的,我用了參考或稱為指涉器(Reference)的引數(Argument),這是為了增加效率,但你也知道,這是行內函數,在行內函數看來,一切都無意義的。不過編譯器並不會真的乖乖的把它編譯成行內函數,事實上,你加了"inline"這幾個字對它來說只不過是「建議」而已。這個Swap函數我們以後還會用到,先記著吧。
參考資料:維基百科
發文者:竹中軟研24th教學
沒有留言:
張貼留言