C/C++版冒泡排序

霸气de小男生 提交于 2020-01-14 02:16:58

冒泡排序实现如下:

#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传递排序的方式(从大到小或从小到大)。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!