c++ 冒泡排序

#include <iostream>
using namespace std;


class maopao  //类
{
private:
	int chang;//长
	int *arr;//数组
	int t;//交换数据会用到
	void small_to_big(int *aa, int c);//从小到大排序
	void big_to_small(int *aa, int c);//从大到小排序
	void swap(int &a, int &b);//交换
public:
	maopao(int *aa, int c);//构造函数
	~maopao();//析构函数
	void show();//外部调用接口
	void small_to_big();
	void big_to_small();
};

//构造函数
maopao::maopao(int *aa, int c)
{
	arr = aa;//输入数组赋给arr
	chang = c;//输入长度赋给chang
}
//析构函数
maopao::~maopao()
{
	cout << "结束" << endl;
}
//显示数组
void maopao::show()
{
	for (int i = 0; i < chang; i++)
	{
		cout << arr[i] << " ";
	}
	cout << endl;
}

//从小到大
void maopao::small_to_big()
{
	small_to_big(arr, chang);
}

void maopao::small_to_big(int *aa, int c)
{
	for (int i = 0; i < c; i++)
	{
		for (int j = 0; j < c - i - 1; j++)
		{
			if (aa[j] > aa[j + 1])
			{
				swap(aa[j], aa[j + 1]);
			}
		}
	}
}

//从大到小
void maopao::big_to_small()
{
	big_to_small(arr, chang);
}
void maopao::big_to_small(int *aa, int c)
{
	for (int i = 9; i > 0; i--)
	{
		for (int j = 9; j > c - i - 1; j--)
		{
			if (aa[j] > aa[j - 1])
			{
				swap(aa[j], aa[j - 1]);
			}
		}
	}
}
//交换
void maopao::swap(int &a, int &b)
{
	t = a;
	a = b;
	b = t;
}




int main(int argc, char *args[])
{
	int buf[10] = { 12, 4, 34, 6, 8, 65, 3, 2, 988, 45 };
	int m = sizeof(buf) / sizeof(int);//申请内存空间,并得知数组长度
	maopao sa1(buf, m);

	cout << "排序前:" << endl;
	sa1.show();

	sa1.small_to_big();
	cout << "从小到大排序后:" << endl;
	sa1.show();

	sa1.big_to_small();
	cout << "从大到小排序后:" << endl;
	sa1.show();
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章