从右向左冒泡排序

本文介绍了从右向左进行冒泡排序的方法,不同于传统的从左向右寻找最大值,而是从右向左寻找最小值。通过定义数组大小、当前值和边界,实现了一种新的冒泡排序算法。程序中使用了函数来处理排序过程,并展示了如何传递数组长度作为参数。示例代码针对5个数进行排序,调整数组大小即可适应更多元素的排序需求。
摘要由CSDN通过智能技术生成

 前面写的冒泡排序是从左边向右找较大值,先找到最大值,然后依次找到次最大值,从右往左排序。这篇文章再次从右边往左找最小值,先将最小值找到,再找次较小值,从左往右排序。

我们先定义三个值int size=sizeof(arr)/sizeof(arr[0]);//数组的大小

int cur;//current 当前值

int bound;//边界(0,size-1]就可以表示整个数组下标的区间,(0,bound]表示已排序的区间,[bound,size)表示待排序区间

定义一个排序的函数,代码如下所示

void asc_sorted(int* arr,int size)
{
	int bound; int cur;//cur:current,bound :边界
	for (bound = 0; bound<size; ++bound)
	{
		for (cur = size - 1; cur>bound;--cur)
		{
			//找较小值
			if (arr[cur - 1] > arr[cur])
			{
				int temp = arr[cur];
				arr[cur] = arr[cur - 1];
				arr[cur - 1] = temp;
			}
		}
	}
}

// 数组作为函数的参数时会隐式转换成指针,指向数组的首元素,所以在定义时要借用指针。
// 在函数外部将数组长度求好然后当做参数传到函数里面。

完整程序如下所示示。代码中只要求对5 个数进行排序,如果需要更多,修改数组大小就行。

#include <stdio.h>
#include <stdlib.h>
void asc_sorted(int* arr,int
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值