本文實(shí)例講述了C語(yǔ)言排序算法之冒泡排序?qū)崿F(xiàn)方法。分享給大家供大家參考,具體如下:
冒泡排序和改進(jìn)的冒泡排序
/*-------------------------------------------------------------------------------------------Bubble_sort.h冒泡排序: 時(shí)間復(fù)雜度為O(N^2)改進(jìn)的冒泡排序: 時(shí)間復(fù)雜度仍為O(N^2) 一般的冒泡排序方法有可能會(huì)在已經(jīng)排好序的情況下繼續(xù)比較,改進(jìn)的冒泡排序 設(shè)置了一個(gè)哨兵flag,如果一次for循環(huán)沒(méi)有進(jìn)行交換,則元素已經(jīng)排好序,由哨兵控制退出循環(huán)。-------------------------------------------------------------------------------------------*/#ifndef BUBBLE_SORT_H#define BUBBLE_SORT_H#include "typedef.h"#include "swap.h"//冒泡排序void Bubble_sort(T *a, int n){ for(int i=n-1; i != 0; --i) for(int j=0; j != i; ++j) if(a[j+1] < a[j]) swap(a[j+1],a[j]);}//改進(jìn)的冒泡排序void Improved_Bubble_sort(T *a, int n){ for(int i=n-1; i != 0; --i) { bool flag = true; for(int j=0; j != i; ++j) //這一趟遍歷如果沒(méi)有交換,則已完成排序 if(a[j+1] < a[j]) { swap(a[j+1],a[j]); flag = false; } if(flag == true) break; }}#endif希望本文所述對(duì)大家C語(yǔ)言程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答