氣泡排序與函式指標

2021-08-09 14:38:23 字數 966 閱讀 5184

何為函式指標? 

即 void (*pf)();

如上宣告,即為最簡單的函式指標宣告.無返回值,無引數.

在學習c語言構建乙個adt的時候,看到過函式的指標,但是沒有真切感受到其作用.

感覺在大多數時候它是沒什麼作用的,因為仔細一想,把函式作為引數,也就是在乙個函式裡

呼叫另外乙個函式,那我何必多次一舉,直接呼叫想用的函式就完了唄.

但是,今天是感受到其作用了,那是用在氣泡排序上,作用便是隨意指揮氣泡排序,

即讓其進行公升序排列,還是降序排列.

在之前我寫過一篇關於氣泡排序的優化版,今天的這一版和函式指標相結合,可以說是很棒棒了

以下為**

#includeint bigger(int , int );

int smaller(int , int );

void bubblesort(char *, int , int (*fp)(int , int));

int main()

; bubblesort(st,10,smaller);

for(i = 0; i < 10; i++)

printf("\n");

return 0;

}void bubblesort(char *st, int length, int(*fp)(int , int))

if (i == 0&& j == length-2-i && flag==1)

} }}int bigger(int a, int b)

int smaller(int a, int b)

{ return a

還有一點就是 因為函式的位址即使函式本身,

所以還有其他使用函式指標方法,就是直接使用函式指標變數名 

fp() == (*fp)(); 他們兩個是等價的.

但是有時候為了增強**的可讀性,建議統一使用(*fp)()形式, 能很清晰的看出來呼叫的是函式指標指向的這個函式.

通過氣泡排序了解函式指標

思路 1.建立乙個陣列,然後通過rand函式填充10個1 100的數,然後用輸出流迭代器ostream iterator將原始陣列元素輸出,然後進行氣泡排序,將排序完的陣列再用迭代器ostream iterator輸出。2.然後就是氣泡排序 兩重迴圈 第一層循壞是排序的趟數,第一趟取出最大或最小值,...

指標實現氣泡排序

氣泡排序的基本思想 如果要對n個數進行排序就需要進行n 1次比較,在第一輪比較中要進行n 1次兩兩比較,在第j輪中進行n j次兩兩比較 include includevoid sort int n,int p printf 排序後的陣列 n for i 0 i n i printf n int ma...

氣泡排序 與 雙向氣泡排序

public class test if k 0 break last k public static void bidirectionalbubblesort int a last k for int m last m first m first k if first last break pub...