计数排序 淡淡的烟草味﹌ 2021-09-23 03:22 515阅读 0赞 **计数排序:** 假设n个输入元素中的每一个都是在0~区间内的一个整数,其中k为某个整数。当k=O(n)是,排序时间为O(n). *基本思想:*对每个输入元素x,确定小于x元素的个数。利用这一信息,可以直接把x放到输出数组的位置上。例如,有17个元素小于x,则x就应该在第18个输出位置上。 输入:数组A\[1,n\] 借助数组C\[0,k\]存放元素x的个数 输出:数组B\[1,n\] COUNTING-SORT(A,B,k) 创建数组C[0,k] 初始化数组C[i]=0 for i=0 to k C[i]=0 //C[i]为每个元素的个数 for j=1 to A.length C[A[j]]= C[A[j]]++; //C[i]为每个比i小或等于i的元素个数 for i=1 to k C[i]=C[i]+C[i-1] for j=A.length downto 1 B[C[A[j]]]=A[j] C[A[j]]= C[A[j]]-1; **Java实现** import java.util.Random; public class Main { private static int N=10; private static int k=20; static Random rand = new Random(); //计数排序适用于数组中的最大数k==n public static void main(String[] args) { // TODO Auto-generated method stub test_Counting_sort(); } private static void test_Counting_sort() { // TODO Auto-generated method stub int[] A=new int[N]; for(int i=0;i<A.length;i++){ A[i]=rand.nextInt(k); } System.out.println("排序前:"); print(A); int[] B=new int[N]; Counting_Sort(A,B); System.out.println("排序后:"); print(B); } private static void Counting_Sort(int[] A, int[] B) { // TODO Auto-generated method stub //注意:A中的每个元素均小于等于k int[] C=new int[k]; //初始化C使得数组C的,每个元素初始值为0 for(int i=0;i<C.length;i++){ C[i]=0; } //C[i]为元素i的个数 for(int i=0;i<A.length;i++){ C[A[i]]++; } //C[i]为小于等于元素i的个数 for(int i=1;i<C.length;i++){ C[i]=C[i]+C[i-1]; } //得到输出的元素B[i] for(int i=A.length-1;i>=0;i--){ B[C[A[i]]-1]=A[i];//索引从0开始 故需要减1 C[A[i]]--; } } // 打印数组 private static void print(int[] A) { // TODO Auto-generated method stub for (int i = 0; i < A.length; i++) { System.out.print(A[i] + "\t"); } System.out.println(); } } 运行结果
相关 计数排序 数排序是非比较排序,桶排序的一种 时间复杂度:O(n),空间复杂度O(n) ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_1... 一时失言乱红尘/ 2024年04月18日 08:20/ 0 赞/ 149 阅读
相关 计数排序 计数排序 冒泡、选择、插入、归并、快速、希尔、堆排序,都是基于比较的排序,平均时间复杂度最低是O(nlogn)。 计数排序、桶排序、基数排序,都不是基于比较的排序,它们 痛定思痛。/ 2023年02月20日 10:43/ 0 赞/ 56 阅读
相关 排序算法——计数排序 排序算法——计数排序 > 计数排序是一个非基于比较的排序算法。它的优势在于在对一定范围内的整数排序时,快于任何比较排序算法。 这是一种牺牲空间换取时间的做法,当O(k)> 绝地灬酷狼/ 2022年12月23日 06:57/ 0 赞/ 371 阅读
相关 【排序】计数排序 为什么记录这个 在做 [leetcode 561 题][leetcode 561]的时候,第三种解法,看了很久才明白,后来理解实际上是做了一次计数排序。 这个题,直接看 缺乏、安全感/ 2022年11月20日 02:00/ 0 赞/ 297 阅读
相关 计数排序 转载自:[http://www.cnblogs.com/eaglet/archive/2010/09/16/1828016.html][http_www.cnblogs.com Bertha 。/ 2022年08月11日 08:00/ 0 赞/ 282 阅读
相关 计数排序 计数排序,他的主要目的是对整数排序并且会比普通的排序算法性能更好。 1. 初始化一个计数数组,大小是输入数组中的最大的数。 2. 遍历输入数组,遇到一个数 布满荆棘的人生/ 2022年07月14日 01:26/ 0 赞/ 315 阅读
相关 计数排序 对于一个int数组,请编写一个计数排序算法,对数组元素排序。 给定一个int数组A及数组的大小n,请返回排序后的数组。 测试样例: [1,2,3,5,2, 系统管理员/ 2022年06月09日 01:36/ 0 赞/ 308 阅读
相关 计数排序 计数排序 算法描述:是一种通过计数来达到排序的方法。 ![20180326152550965][] 1.选出数组的最大值k,创建一个k+1长度的数组coun 素颜马尾好姑娘i/ 2022年05月28日 00:20/ 0 赞/ 326 阅读
相关 计数排序 / 计数排序:统计小于等于该元素值的元素的个数i,于是该元素就放在目标数组的索引i位(i≥0)。 计数排序基于一个假设,待排序数列的 ゝ一纸荒年。/ 2021年12月18日 05:07/ 0 赞/ 398 阅读
相关 计数排序 计数排序: 假设n个输入元素中的每一个都是在0~区间内的一个整数,其中k为某个整数。当k=O(n)是,排序时间为O(n). 基本思想:对每个输入元素x,确定小于x元素的 淡淡的烟草味﹌/ 2021年09月23日 03:22/ 0 赞/ 516 阅读
还没有评论,来说两句吧...