Algorithm 给定区间内的整数排序
在区间[0,n^c]中有n个整数,其中c是某个正整数 我可以使用哪种算法在线性时间内对这些整数进行排序Algorithm 给定区间内的整数排序,algorithm,Algorithm,在区间[0,n^c]中有n个整数,其中c是某个正整数 我可以使用哪种算法在线性时间内对这些整数进行排序 我的问题是:给定时间间隔,最长的数字最多有cnlogn个数字,所以RadixSort不会在Onlogn时间内运行吗?使用基数排序。您可能会说它不够有效,因为位数是logn^c,所以总时间复杂度只有logn。但是,您不必以10为基数进行排序!您可能可以在恒定时间内将数字转换为基数n,这取决于n,基数排序取决于n,因为log_nn^c=c。我相信您要找的是基数排序。@Coldspeed的可能重复:
我的问题是:给定时间间隔,最长的数字最多有cnlogn个数字,所以RadixSort不会在Onlogn时间内运行吗?使用基数排序。您可能会说它不够有效,因为位数是logn^c,所以总时间复杂度只有logn。但是,您不必以10为基数进行排序!您可能可以在恒定时间内将数字转换为基数n,这取决于n,基数排序取决于n,因为log_nn^c=c。我相信您要找的是基数排序。@Coldspeed的可能重复:我确实看过基数排序。但如果我正确理解基数排序,我需要m个桶,其中m是最长整数的位数。给定我的时间间隔,最长的数字最多有以10为基数的c*logn个数字。radixSort的运行时不会是Onlogn而不是On,因为这些数字的长度是c*nlogn???我想你是对的。要将其中一个整数转换为基数n,我最多需要c运算。所以我可以把所有的n个整数转换成c*n=线性时间。此外,数字的长度始终以c为界。