冒泡排序实现如下:
#include <iostream>
#include <string>
using namespace std;
#define _Greater_ 0//从大到小排序的状态码,用来指定排序是按照从大到小的顺序进行排序的
#define _Less_ 1//从小到大排序的状态码,用来指定排序是按照从小到大的顺序进行排序的
//用constepr来替代上面宏定义的写法(此处已被注释)
#if 0
constexpr int _Greater_ = 0;
constexpr int _Less_ = 1;
#endif
//用枚举来替代上面宏定义的写法(此处已被注释)
#if 0
enum Direction{
_Greater_ = 0,
_Less_ = 1
};
#endif
//冒泡排序
template<typename DataType>
void bubbleSort(DataType *array,const int len,const int comp){
//从大到小的顺序排列
if(comp == _Greater_){
//循环去冒泡,依次将数组中的元素按照从大到小的顺序冒泡
for(int j = 0;j < len - 1;++j){
//冒一个泡到最右边
for(int i = 0;i < len - 1 - j;++i){
if(array[i] < array[i+1]){
DataType temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
}
}
}
}
//从小到大的顺序排列
if(comp == _Less_){
//循环去冒泡,依次将数组中的元素按照从小到大的顺序冒泡
for(int j = 0;j < len - 1;++j){
//冒一个泡到最右边
for(int i = 0;i < len - 1 - j;++i){
if(array[i] > array[i+1]){
DataType temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
}
}
}
}
}
int main(int argc,const char *agrv[]){
int data[] = {9,8,9,7,6,5,6,5,7,0,2,3};
//调用冒泡排序接口,将data数组进行从大到小排序
bubbleSort(data,sizeof(data)/sizeof(int),_Greater_);
//排序后的打印:
for(int i = 0;i < sizeof(data) / sizeof(int);++i){
cout<<data[i]<<" ";
}
cout<<endl;
return EXIT_SUCCESS;
}
上述代码中bubble接口的用法:
bubbleSort(参数1,参数2,参数3)----参数1传递需要被排序的数组,参数2传递数组的长度,参数3传递排序的方式(从大到小或从小到大)。
来源:CSDN
作者:虚拟神明
链接:https://blog.csdn.net/DearXie/article/details/103866661