数据结构课程设计之交换排序(一)

功能要求:利用随机数产生N个随机整数,对产生的数用多种算法排序并将排序后的结果保存到不同的文件中。
1、起泡排序(优化后):起泡排序是一种稳定的交换排序,基本思想是将数据中相邻的数据两两比较,如果反序就交换,直到出现没有反序的记录为止。改进后通过设立标志位来判断相邻的数据是否已经有序,是则跳过,减少交换次数,挺高性能。如图1-1:
在这里插入图片描述
代码如下:

void bubbleSort(Sqlist L){
	int i,j,Q=1;
	int F = 1; 
	for(i = 1;i<n&&(F == 1);i++){
		F=0;
		for(j = n-1;j>= i;j--){
			if(L[j].key > L[j+1].key){
				swap(L,j,j+1);
				F = 1;
			}
		}
	}
}

数据量为30时测试结果:
在这里插入图片描述
2、快速排序:通过一趟排序将待排记录分割成独立的两部分,其中一部分比另一部分的记录的关键字小,然后分别对两部分进行继续排序,最终完成全部排序。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

/*快速排序*/
int Partition(Sqlist L,int low,int high){
	L[0] =	L[low];
	int pivotkey = L[low].key;
	while(low<high){
		while(low<high&&L[high].key >= pivotkey)	--high;
		L[low] = L[high];
		while(low<high&&L[low].key <= pivotkey)	++low;
		L[high] = L[low];
	}
	L[low] = L[0];
	return low;
}

void Qsort(Sqlist L,int low,int high){
	if(low < high){
		int pivoloc = Partition(L,low,high);
		Qsort(L,pivoloc+1,high);
		Qsort(L,low,pivoloc-1);
	}
}

void QuickSort(Sqlist L){
	Qsort(L,1,n);
}

数据量为30时:
在这里插入图片描述
(第一次写,记录一下自己打的代码图片源于大话数据结构)
欢迎指正。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白1.0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值