一个比sort更快的排序

风格不统一 提交于 2019-11-29 06:41:38

一个比sort更快的排序,一百万个数只需要27ms

在这里插入图片描述

非常消耗内存

#include<stdio.h>
#include<stdlib.h>
void SuperSort(int a[],int l){//a是数组头指针,l是数据最大值 
	int i,j,k;
	char *p=(char*)calloc(l,1);
	for(i=0;a[i]!=0;i++){
		p[a[i]]++;
	}
	for(k=0,j=0;j<i;){
		if(p[k]==0){
			k++;
		}else{
			p[k]--;
			a[j++]=k;
		}
	}
}

int a[20];//举个例子,比如排序20个数(一定要是全局变量哦)
int main(){
	for(int i=0;i<20;i++)
	{
		a[i]=rand()%500000+1;//记住数值不能为0,也就是本算法不能排序0的数
	}
	SuperSort(a,500000);//数组的最大值不超过50万,所以第二个参数就填50万
	//然后a数组就排序完成了
	for(int i=0;i<20;i++)
	{	
		printf("%d ",a[i]);//然后输出他
	}
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!