基于排序的方法求一组数的中位数(冒泡排序&选择排序) -- 浙大《数据结构》第二版 例2.6

本文探讨了如何使用冒泡排序和选择排序来求解一组数的中位数。通过详细解释两种排序算法的思想,代码实现,以及学习过程中的额外知识点,帮助理解数据结构中的中位数计算。
摘要由CSDN通过智能技术生成

基于排序的方法求一组数的中位数

这个例题写上两种方法。其实既然是基于排序的,那么方法的不同,区别就在采用的排序方法的不同。
自己想到的是冒泡排序(你说说你们,学了这么久的数据结构,连个冒泡排序都不会写,读什么书?--刘振宇),书上提供给的是选择排序。

自己想到的办法(冒泡排序)

冒泡排序的思想

冒泡排序是一种比较简单的排序方法,它的基本思路是:重复的走访要排序的数列,一次比较相邻的两个元素,如果他们顺序错误就把他们交换过来,直到没有在需要交换的,整个数列排序完成。 由于每次循环,最大(或最小)的一个元素都会到数列的最末端,所以称之为冒泡排序。

基本运作方式

这里以每次都挑出最大的那个元素为例:
1. 比较相邻的元素。如果第一个比第二个答,就交换他们
2. 对每一对相邻的元素做相同的工作,从开始第一对到结束的最后一对。(在这一点,最后的元素应该会是最大的数)
3. 针对所有的元素重复以上的步骤,除了每次参与循环的最后一个(比如说,第一次循环就是以最后一个元素为比较截止点,第二次循环就是以倒数第二个元素为比较截止点,因为第一次循环结束后,最后一个元素是有序的了)。
4. 持续每次对越来越少的匀速重复上面的步骤,知道没有任何一对数字需要比较。

代码实现

此处只讲冒泡排序,排序完成之后找中位数的方法,是小学课本知识(别问我为什么记得那么清楚,我妹刚小学毕业,这么小的她后天就要去外地读书了,我……哭了)
int* bubble_sort(int a[], int n){
	//sorting
	int i,j,tmp;
	for( j = 0; j < n-1; j++){
		for( i = 0 ;i < n-j-1; i++){
			if(a[i] > a[i+1]){
				tmp = a[i];
				a[i] = a[i+1];
				a[i+1] = tmp;
			}
		}
	}
	return a;
}
对两个循环变量的理解是比较关键的部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值