算法分析与设计——排序算法效率的比较

本文分析了冒泡排序、选择排序、希尔排序和快速排序在处理100000个随机整数数组时的运行时间。结果显示,希尔排序在四种排序算法中表现最佳,而冒泡排序最慢。当数组全逆序时,快速排序因递归调用过多可能导致溢出问题。
摘要由CSDN通过智能技术生成

本文主要是比较冒泡排序、选择排序、 希尔排序、快速排序,这四种不同的排序过程的运行时间。

为了消除数据之间差异导致排序效果的影响,四种排序均使用相同的数组进行排序。为了使运行时间的结果差异更明显,数组长度设为100000(为了防止数组长度溢出,如果使用数组的话,建议定义全局变量。或者使用堆栈、vector等动态内存分配),数组元素取值范围是在[0, 100000]之间的随机正整数。

冒泡排序:

void BubbleSort(long int a[],int len){//冒泡排序
	for(int i=0;i<len;i++)
		for(int j=0;j<len-i;j++) 
			if(a[j]>a[j+1]) //比较相邻的两个值,大的往下沉
				swap(a[j],a[j+1]);
}

选择排序:

void SelectionSort(long int a[],int len){//选择排序
	int min;
	for(int i=0;i<len;i++){
		min=i;
		for(int j=i+1;j<len;j++)
			if(a[min]>a[j]) //每一趟都选择最小值
				min=j;
		swap(a[i],a[min]); //将最小值与此趟第一个值交换
	}
}

希尔排序:

void ShellSort(long int a[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值