排序算法之懒人排序

排序算法很多,快速排序、堆排序、选择排序、冒泡排序等等。最近一周一直再看排序算法,多数比较容易理解,其中多数理解起来都比较容易,但是实现起来感觉堆排序比较麻烦,还要建堆和处理堆。

再看快速排序的时候,突然想到如果根据一个基准值将其他数字分为大小两堆,再在两堆内继续实行二分比较……如果注意观察排好序的元素其下标和值在大小上的对应关系:下标小的元素其值也必定比较小。就比较好编程了,只要元素的下标大小关系和值得大小关系不对应,就将两者调换,就可以实现排序。虽然理论上这种想法时间复杂度很高(n^2),但是空间复杂度不高。不过在处理海量数据时显然时间复杂度影响更大,所以这种懒人排序价值有限,博友们看看便好!

//给定数组懒人排序(下标与值对应),从小到大排列。
#include <stdio.h>

int main()
{
	int i,j,t,k,gap;
	int a[10]={1,23,41,31,45,767,48,90,6,88};
	for(i=0;i<10;i++)
		for(j=0;j<10;j++)
		{
			if((i-j)*(a[i]-a[j])<0)         
			{
				t=a[i];                                   
				a[i]=a[j];
				a[j]=t;
			}
		}
	printf("\nThe sorted numbers are:\n");
	for(i=0;i<10;i++)		printf("%5d",a[i]);
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

吉大秦少游

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

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

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

打赏作者

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

抵扣说明:

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

余额充值