一个比sort更快的排序

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

    • 非常消耗内存

一个比sort更快的排序_第1张图片

非常消耗内存

#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]);//然后输出他
	}
}

你可能感兴趣的:(一个比sort更快的排序)