新的排序算法

作者介绍了一种基于布尔数组的排序算法,时间复杂度为O(n),代码简洁。虽然空间占用较大,但适用于数值较小的情况。提供了优化方案以减少空间浪费,但提醒谨慎优化以避免错误。
摘要由CSDN通过智能技术生成

我发现了 石油 新的排序算法!!!

算法:

定义布尔数组a[NUM] (我也不知道NUM的值) 输入 n,循环输入n次整数x,每次输入把a[x]的值改为1,输出每个 a[i]=1 的 i 是有序序列

算法时间复杂度 O(n)

空间占用(字节) 4*NUM+8

∵ sizeof(int)=4
∴ sizeof(a[NUM])=4*NUM
∵ type(n)=int,type(x)=int
∴ sizeof(n)=sizeof(x)=4
∴ sizeof(n)+sizeof(x)=4+4=8
∴ sizeof(全局)=4*NUM+8

代码

#include<iostream>
using namespace std;
int main(){
	bool a[NUM]={0};int n=0,l,max;
	cin>>n;
	for(int i=0;i<n;cin>>l,i++){
		a[l]=1;
	}
	for(int i=0;i<NUM;i++){
		if(a[i]==1) cout<<i<<" ";
	}
}

优点:

代码短,时间复杂度相对低,对NUM值较小的时候较为便捷

缺点:

空间占用大

优化:

先输入数组,找到最大值MAX,定义大小为MAX的BOOL数组,会减少一些不必浪费的空间,不过慎重优化,以免出现种种错误。

我发现的新排序算法,请留赞与关注!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值