冒泡排序 和 快速排序 算法源码

冒泡与快速排序算法详解
本文深入解析了两种经典的排序算法:冒泡排序和快速排序。通过详细的代码实现,展示了算法的工作原理和步骤,帮助读者理解算法的高效性和适用场景。

冒泡算法

void bubble_sort(int *arr, int *len)
{/*冒泡排序*/
	if (len == arr)return;
	int *_clen = len;
	int *_pl, *_pr;//指针1 指针2
	int _c;

	while (1)
	{
		/*移动指针到数组头*/
		_pl = arr;
		_pr = arr + 1;
		do {
			if (*_pl > *_pr)
			{
				/*交换数据*/
				_c = *_pl;
				*_pl = *_pr;
				*_pr = _c;
			}
			_pl++;
			_pr++;
		} while (_pr < _clen);
		_clen--;
		if (_clen == arr)break;//排序完成 退出循环
	}

}

快速排序

void quick_sort(int *arr, int *len)
{/*快速排序*/
	if (len == arr)return;
	int *_pl, *_pr, _j;
	int _c;
	_j = *arr;//设置基准值

	//读入指针
	_pl = arr;
	_pr = len;
	while (1)
	{
		//左往右 找比 _j 大的值
		while (*++_pl < _j)
			if (_pl==len)break;
		//右往左 找比 _j 小的值

		while (*--_pr > _j)
			if (_pr == arr)break;
		
		if (_pl >= _pr)break;
		/*交换数据*/
		_c = *_pl;
		*_pl = *_pr;
		*_pr = _c;

	}
	//交换基准值
	_c = *arr;
	*arr = *_pr;
	*_pr = _c;
	//递归进行排序
	quick_sort(arr, _pr);
	quick_sort(++_pr, len);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值