C 泛型的氣泡排序

2021-08-10 08:14:06 字數 1596 閱讀 8515

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 一輪排序...