由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
#ifndef BUBBLESORT_H #define BUBBLESORT_H template<class T> inline void Swap(T *a,T *b) //交换两个数值 { T temp = *a; *a = *b; *b = temp; } template<class T> void BubbleSort(T *a,int len) //冒泡排序算法 { for(int i = 0;i < len - 1;++i) { for(int j = len - 2;j >= i;--j) { if(a[j] > a[j + 1]) Swap(&a[j],&a[j + 1]); } } } #endif //BUBBLESORT_H
测试代码:
#include "BubbleSort.h" #include <stdio.h> int main() { int a[] = {20,15,22,30,34,14,19,1,48,5,9,10,88,17}; printf("排序前数组的元素为:\n"); int len = sizeof(a) / sizeof(*a); for(int i = 0;i < len;++i) printf("%d ",a[i]); BubbleSort(a,len); printf("\n排序后数组的元素为:\n"); for(int i = 0;i < len;++i) printf("%d ",a[i]); return 0; }