1.普通的整型氣泡排序
void bubblesort(int *a,int size)
;template //泛型可指定公升降序的氣泡排序
void sortbubble(t *a,int size,bool ret=1)
}} }
}
測試上述函式
int main()
; sortbubble(arr, sizeof(arr) / sizeof(arr[0]),desc); //降序排列
//sortbubble(arr, sizeof(arr) / sizeof(arr[0]), asc); //公升序排列
//sortbubble(arr, sizeof(arr) / sizeof(arr[0]));
for (int i = 0; i < 10; i++)
cout << endl;
char arr2 = "cbadfe";
sortbubble(arr2, strlen(arr2),desc);
cout << arr2 << endl;
double arr3=;
sortbubble(arr3,sizeof(arr3) / sizeof(arr3[0]));
for (int i = 0; i < 5; i++)
cout << endl;
system("pause");
return 0;
}
結果為
3.上述函式的**復用率不高,公升序與降序只有乙個符號不同,我們可以再寫乙個可以排公升序降序、多種型別資料並且**復用率高的函式
templatestruct less //降序
};template<> //特化降序類,使指標陣列型別也可以傳參進行排序
struct less
};templatestruct rise
};template<> //特化降序類,使指標陣列型別也可以傳參進行排序
struct rise
};template void bubblesort(t*arr, int size)
} if (ischange == false)
return;
}}
測試函式
int main()
; bubblesort>(arr1, 3);
int arr2 = ;
bubblesort>(arr2, sizeof(arr2) / sizeof(arr2[0]));
char*p = ;
bubblesort>(p, 3);
system("pause");
return 0;
}
第三種用到了函式模板,類模板,還有特化函式,如果看不懂的話可以查詢c++中模板,特化函式的知識點 C語言泛型程式設計 泛型氣泡排序
在實際程式設計中,常常會需要一些方法 函式 比如排序,它們具體實現基本一致,僅僅只有引數型別不同,那麼可不可以有一種通用的函式,不管是什麼型別的引數都可以通用呢?泛型程式設計 泛型即是指具有在多種資料型別上皆可操作的含義,與模板有些相似。利用泛型程式設計,我們可以寫一些通用的函式,以減少 量,實現 ...
C語言泛型程式設計 泛型氣泡排序
在實際程式設計中,常常會需要一些方法 函式 比如排序,它們具體實現基本一致,僅僅只有引數型別不同,那麼可不可以有一種通用的函式,不管是什麼型別的引數都可以通用呢?泛型程式設計 泛型即是指具有在多種資料型別上皆可操作的含義,與模板有些相似。利用泛型程式設計,我們可以寫一些通用的函式,以減少 量,實現 ...
C 氣泡排序拓展(泛型 委託)
概念 以int為例,每次從頭開始掃瞄兩個相鄰元素的大小,根據所需的順序進行調換,直到不需要交換位置。表示元素已經排序完畢。實現邏輯 依然以int為例,設定乙個 為標誌表示每次迴圈時是否有進行元素互換,初始值為 true 然後進入迴圈體,從頭開始掃瞄,迴圈內若有發生交換操作則將 置為true 一輪排序...