思路: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...