`

Java之计数排序

阅读更多

至于啥叫计数排序就不说了,下面是Java的实现,计数排序就是不用进行元素的比较,效率较高,只是其适用范围有限(特殊条件)。

 

public class CountSort 
{
	public static void main(String[] args)
	{
		int[] a = {3, 1, 6, 0, 3, 0, 1, 5, 3, 6};
		
		int max = getMax(a);
		
		Display(a, "Before sort:");
		
		a = Sort(a, max);
		
		Display(a, "After  sort:");
	}
	
	public static int[] Sort(int[] a, int max)
	{
		int[] b = new int[a.length];
		int[] c = new int[max+1];
		
		for(int i=0; i<b.length; i++)
			b[i] = 0;
		
		for(int i=0; i<c.length; i++)
			c[i] = 0;
		
		int temp = 0;
		for(int i=0; i<a.length; i++)
		{
			temp = a[i];
			c[temp] = c[temp] + 1;
		}
		
		for(int i=1; i<c.length; i++)
			c[i] = c[i] + c[i-1];
		
		for(int i=a.length-1; i>=0; i--)
		{
			temp = a[i];
			
			b[c[temp]-1] = temp;
			c[temp] = c[temp] - 1;
		}
		
		return b;
	}
	
	public static int getMax(int[] a)
	{
		int max = a[0];
		
		for(int i=1; i<a.length; i++)
		{
			if(a[i] > max)
				max = a[i];
		}
		
		return max;
	}
	
	public static void Display(int[] a, String str)
	{
		System.out.println(str);
		
		for(int i=0; i<a.length; i++)
			System.out.print(a[i] + " ");
		
		System.out.println();
	}
}

//输出结果为:
//Before sort:
//3 9 1 8 6 0 4 7 2 9 6 2 3 8 
//After  sort:
//0 1 2 2 3 3 4 6 6 7 8 8 9 9 

 

0
0
分享到:
评论

相关推荐

    Java实现计数排序

    Java实现计数排序不是C,Java实现计数排序不是C,Java实现计数排序不是C

    [Java算法-排序练习]计数排序.java

    该资源提供了在Java中如何实现计数排序的全面指南。文档涵盖了计数排序的基本概念,包括如何对数组进行排序以及如何在Java中实现计数排序。此外,文档还包括一个逐步指南,介绍了如何在Java中实现计数排序,包括详细...

    java实现计数排序算法

    countingSort 方法实现了计数排序算法。首先,我们遍历一遍原数组,找出其中的最大值,以确定计数数组的大小。然后,创建计数数组 count,并将每个元素的出现次数记录在计数数组中。接下来,根据计数数组中的元素...

    Java实现计数排序算法(源代码)

    ### Java实现计数排序算法详解 #### 一、概述 计数排序是一种高效的非比较型整数排序算法,尤其适用于已知数据范围内非负整数的排序任务。它通过统计数组中每个数值出现的频率来确定各个数值在排序后数组中的确切...

    计数排序JAVA实现counting sort algorithm

    Java实现计数排序的关键步骤如下: 1. **初始化计数数组**:创建一个与待排序数组最大值相等长度的计数数组,所有元素初始化为0。 2. **计数过程**:遍历待排序数组,对于每个元素,将其值作为索引增加计数数组...

    Java写的排序类(快速排序 堆排序 计数排序 桶排序 归并排序)

    //排序类 提供int排序的静态方法 有以下排序: 快速排序 堆排序 计数排序 桶排序 归并排序

    详解Java常用排序算法-计数排序

    Java 排序算法 - 计数排序 计数排序(Counting Sort)是一种非比较排序算法,它的基本思想是统计数组中每个元素出现的次数,然后根据元素出现的次数依次将元素放入有序的数组中。计数排序时间复杂度为 O(n+k),其中...

    计数排序介绍和java代码实现

    计数排序介绍和Java代码实现 计数排序是一种非比较的线性时间复杂度排序算法,它通过统计每个元素在待排序数组中出现的次数,然后根据统计信息将元素放回原数组中,从而实现排序。下面是计数排序的详细介绍。 计数...

    java 实现计数排序和桶排序实例代码

    计数排序和桶排序是两种非比较排序算法,它们不依赖于元素间的比较来确定排序顺序,而是通过统计或分配元素到特定的“桶”来实现排序。这两种排序方法在特定情况下能够提供比比较排序更快的性能,但它们也对数据的...

    计数排序算法介绍以及使用Java语言实现

    ### 计数排序算法介绍及Java实现 #### 一、计数排序算法基本概念 计数排序(Counting Sort)是一种非比较型的线性时间复杂度排序算法,其核心思想在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种...

    Java实现八大排序算法

    在这里,我们将深入探讨Java实现的八大排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、堆排序以及计数排序。 1. **冒泡排序(Bubble Sort)**:冒泡排序是一种简单直观的排序算法,...

    java汉字笔画排序2例子及jar包

    这些标签强调了该话题的特定技术点,即使用Java语言对中文字符进行笔画计数并依据笔画数量进行排序。 在提供的压缩包文件中,我们有三个文件: 1. `strokesort2.jar`:这是一个Java可执行文件,包含编译后的代码,...

    java基数排序

    `Node.java`可能是用来创建链表节点的辅助类,因为计数排序过程中可能会用到链表结构来存储和传递数据。 测试文件`test.java`通常包含测试用例,用于验证基数排序算法的正确性。它会创建一个随机数组,调用`...

    java八大排序算法

    - 计数排序是非基于比较的排序算法,适用于整数排序。它通过统计每个数字出现的次数,然后根据统计结果来确定每个元素在输出序列中的位置。 这些排序算法各有优缺点,适用于不同场景。例如,直接插入排序和冒泡...

    JAVA排序汇总 各种排序

    计数排序不是基于比较的排序,它适用于非负整数排序,通过统计每个数字出现的次数,直接确定每个数字在输出序列的位置。时间复杂度为O(n + k),其中k为整数范围。 8. 桶排序(Bucket Sort) 桶排序将数值映射到有限...

    Java各种排序算法代码.zip

    计数排序统计每个元素出现的次数,桶排序将元素分布到多个桶中,基数排序则根据元素的每一位进行排序。 每种排序算法都有其适用场景和性能特点。例如,冒泡排序和插入排序在小规模数据和部分有序数据时效率较高;而...

    Java各种排序算法(含代码)

    - **箱排序**(计数排序、桶排序、多关键字排序):这类排序适用于数值范围不大的整数排序,通过分配和收集元素到预定义的“箱子”中实现排序。它们的时间复杂度可以达到线性O(n),但需要额外空间且对输入分布有...

    java源码 多种排序方式

    这三种排序适用于整数排序,尤其是计数排序,它能直接得到排序结果,时间复杂度为O(n+k),其中k为整数范围。桶排序假设输入均匀分布到若干个“桶”中,每个桶独立排序,最后按顺序组合。基数排序根据数字的每一位...

    java常见八种排序算法

    计数排序的时间复杂度为O(n+k),其中k为整数范围,但其不能处理负数和浮点数。 以上就是Java中常见的八种排序算法,它们各有优缺点,适用于不同的场景。在实际开发中,开发者需要根据数据的特性、规模以及性能需求...

    java中的各种排序实现

    计数排序适用于非负整数排序,统计每个数字出现的次数,然后根据这些次数确定每个元素的位置。时间复杂度为O(n+k),其中k是数值范围,但不适用于大范围的整数。 8. 桶排序(Bucket Sort) 桶排序将数据分布到多个桶...

Global site tag (gtag.js) - Google Analytics