博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DS-排序-0002-冒泡排序

Posted on 2023-10-30 23:00  乔55  阅读(1)  评论(0编辑  收藏  举报

冒泡排序

// 交换2数
void xxx_swap(int& a, int& b)
{
	int temp = a;
	a = b;
	b = temp;
}

// 冒泡排序:在0~j区间内,将最大值存放在arr[j]上,j取值从N-1递减至1
// 冒泡排序每次交换的2个数都是相邻的。选择排序可能跨位置交换
void xxx_bubble(int arr[], int N)
{
	if (arr == NULL || N < 2)
	{
		return;
	}
	for (int j = N - 1; j > 0; --j)
	{
		for (int i = 0; i < j; ++i)
		{
			if (arr[i] > arr[i + 1])
			{
				xxx_swap(arr[i], arr[j]);
			}
		}
	}
}
void test()
{
	int arr[] = { 3,4,2,5,6,8,1,-5,10,50 };
	int N = sizeof(arr) / sizeof(arr[0]);
	xxx_bubble(arr, N);
	for (int i = 0; i < N; ++i)
	{
		cout << arr[i] << ",";
	}
	cout << endl;
}