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

2021-10-04 14:22:41 字數 1327 閱讀 9440

思路:1.建立乙個陣列,然後通過rand函式填充10個1~100的數,然後用輸出流迭代器ostream_iterator將原始陣列元素輸出,然後進行氣泡排序,將排序完的陣列再用迭代器ostream_iterator輸出。

2.然後就是氣泡排序(兩重迴圈),第一層循壞是排序的趟數,第一趟取出最大或最小值,然後每比較完一趟就減少最大或最小值,直到所有的數被排序完成。再氣泡排序進行判斷的時候,可以使用函式指標來實現公升序和降序排序。

*函式指標:

語法:和函式命名的語法類似,唯一不同的是將函式名變為函式指標,本例中定義了乙個函式指標bool (p)(int x, int y )裡面的p即是函式指標,而p所指向的指標函式是bigger和small,這裡的bigger和small函式名被看做是常量,因此在main函式裡進行傳遞引數的時候要把函式名作為常量實參進行傳遞。即:bubblesort(vi,size,bigger),bubblesort(vi, size, small);這樣就能實現公升序和降序排序啦。

代關於函式指標的作用,就是進行公升序降序排序的時候不需要在重新寫一遍氣泡排序,只是通過傳入函式指標所指向的函式的函式名即可,函式名為常量。這樣節省了記憶體,也很方便。

**如下:

#include

#include

using

namespace std;

#define size 10

void

bubblesort

(int arr,

int len,

bool

(*p)

(int x,

int y));

bool

bigger

(int x,

int y)

;//指標函式

bool

small

(int

,int y)

;int

main()

bool

bigger

(int x,

int y)

bool

small

(int x,

int y)

//指標函式

void

bubblesort

(int arr,

int len,

bool

(*p)

(int x,

int y ))}

}}

執行結果

氣泡排序與函式指標

何為函式指標?即 void pf 如上宣告,即為最簡單的函式指標宣告.無返回值,無引數.在學習c語言構建乙個adt的時候,看到過函式的指標,但是沒有真切感受到其作用.感覺在大多數時候它是沒什麼作用的,因為仔細一想,把函式作為引數,也就是在乙個函式裡 呼叫另外乙個函式,那我何必多次一舉,直接呼叫想用的...

指標實現氣泡排序

氣泡排序的基本思想 如果要對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...

通過JS實現氣泡排序

氣泡排序的三個版本 先說最簡單的排序,嚴格說不屬於氣泡排序。原理 當i 0時,讓arr 0 在第一位的數字 和後面每一位的數字比較。若出現第一位的數字比其中一位大的時候,則和那一位數字交換位置。當第一位數字和其他數字全部比較和互換結束,此時在第一位的數字就是陣列中最小的。然後當i 1時,讓arr 1...