氣泡排序 C語言

2021-10-25 22:36:55 字數 966 閱讀 8535

//bubble sort

#include

intpsort

(int*,

int)

;int

main

(void);

int ans[10]

=;int len =

sizeof

(ans)

/sizeof

(ans[0]

);printf

("len =%d\n"

,len)

;for

(int i=

0;i)psort

(ans,len)

;for

(int i=

0;i)return0;

}int

psort

(int

*pchange ,

int length)}if

(flag)

}return flag;

}

console執行結果如下:

雙重for迴圈,所以時間複雜度是:o(n²), 變數的記憶體分配都是在定義的時候,也就有限數量,所以空間複雜度是o(1)。

這個**容易埋坑的地方是這個雙重for迴圈, 若為以下寫法,會出現pchange[length],導致陣列越界。

for

(int i=

0; i

1;i++

)}

然後產生報錯;

*

** stack smashing detected ***

:./a.out terminated

aborted

(core dumped)

C語言 氣泡排序

氣泡排序 兩兩比較相鄰記錄的關鍵碼,如果反序則交換,直到沒有反序記錄為止 將整個待排序的記錄序列分成有序區和無序區,初始時有序區為空,無序區包括所有待排序的記錄 對無序區從前向後依次將相鄰記錄的關鍵碼進行比較,若反序則交換,從而使得關鍵碼小的記錄向前移,關鍵碼大的向後移 像水中的氣泡,體積大的先浮起...

氣泡排序 C語言

c語言是比較簡單基礎的排序方式,排序效率並不高,但是很穩定。通過rand隨機生產10個小於20的數來測試排序。氣泡排序 include include include void bubblesortbetter int a,int n 改進 if flag 0 break void bubbleso...

C語言 氣泡排序

直接看 吧 include void bubblesort int r,int len if exchange 如果沒有發生交換,提前終止演算法 return int main bubblesort aa,10 for int i 0 i 10 i printf d aa i printf n re...