计数排序

 

第10节 计数排序练习题

对于一个int数组,请编写一个计数排序算法,对数组元素排序。

给定一个int数组A及数组的大小n,请返回排序后的数组。

测试样例:
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
Java (javac 1.7)

代码自动补全

 
 
 
 
 
1
import java.util.*;
2

3
public class CountingSort {
4
    public int[] countingSort(int[] A, int n) {
5
        countingSort(A);
6
        return A;
7
    }
8

9
    public void countingSort(int[] arr) {
10
        int[] tempArr = new int[arr.length];// 临时数组
11
        int[] timesArr;// 统计每个元素出现的次数,放入到对应的桶中
12
        int range;// 统计这一组的范围,得出需要多少个桶
13
        int max = arr[0];
14
        int min = arr[0];
15
        for (int a : arr) {
16
            if (a > max)
17
                max = a;
18
            if (a < min)
19
                min = a;
20
        }
21
        range = max - min + 1;// 得出极值差,为了减小临时数组(统计各元素出现的次数)的长度
22
        timesArr = new int[range];
23

24
        for (int i = 0; i < arr.length; i++) {
25
            timesArr[arr[i] - min]++;
26
        }
27
        for (int i = 1; i < timesArr.length; i++) {// 得到所有元素的大小上的总体顺序
28
            timesArr[i] += timesArr[i - 1];
29
        }
30
        for (int i = 0; i < arr.length; i++) {// 将arr中元素的位置顺序对应到临时数组中
31
            int position = timesArr[arr[i] - min];// 得到arr[i]这个元素在整体上的位置
32
            tempArr[--position] = arr[i];// 根据上面的位置,将该元素放入到临时数组中
33
            timesArr[arr[i] - min]--;
34
        }
35
        for (int i = 0; i < arr.length; i++) {
36
            arr[i] = tempArr[i];
37
        }
38
    }
39
}
 
 
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
 

算法-java代码实现计数排序的更多相关文章

  1. 算法-java代码实现希尔排序

    希尔排序 第8节 希尔排序练习题 对于一个int数组,请编写一个希尔排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组.保证元素小于等于2000. 测试样例: [1,2 ...

  2. 算法-java代码实现选择排序

    选择排序  

  3. 排序算法的c++实现——计数排序

    任何比较排序算法的时间复杂度的上限为O(NlogN), 不存在比o(nlgN)更少的比较排序算法.如果想要在时间复杂度上超过O(NlogN)的时间复杂度,肯定需要加入其它条件.计数排序就加入了限制条件 ...

  4. 排序算法Java代码实现(一)—— 选择排序

    以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦! 本片分为两部分代码: 常用方法封装 排序算法里需要频繁使 ...

  5. 常见排序&查询算法Java代码实现

    1. 排序算法代码实现 /** * ascending sort * 外层循环边界条件:总共需要冒泡的轮数--每一轮都将最大或最小的数冒泡到最后 * 内层循环边界条件:冒泡数字移动的边界--最终数字需 ...

  6. 排序算法<No.1> 【计数排序】

    继上篇博文,今天我将先介绍一下什么是计数排序,将计数排序描述清楚后,再进行后续的桶排序方法解决这个问题. 通常情况下,一提到排序,大家第一反应就是比较,其实,今天我要说的这个计数排序,不是基于比较的排 ...

  7. 算法-java代码实现基数排序

    基数排序 第11节 基数排序练习题 对于一个int数组,请编写一个基数排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组.保证元素均小于等于2000. 测试样例: [1 ...

  8. 算法-java代码实现堆排序

    堆排序 第7节 堆排序练习题 对于一个int数组,请编写一个堆排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2 ...

  9. 算法-java代码实现快速排序

    快速排序 对于一个int数组,请编写一个快速排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] ...

随机推荐

  1. Ubuntu配置Django+ Apache2+ mysql

    # 我的Ubuntu上自带的python3.5,所以安装一下 python3.6sudo add-apt-repository ppa:jonathonf/python-3.6sudo apt-get ...

  2. Linux - Shell常用指令

    一.文件.目录操作命令 1.ls命令:显示文件和目录的信息 ls 以默认方式显示当前目录文件列表 ls -a 显示所有文件包括隐藏文件 ls -l 显示文件属性,包括大小,日期,符号连接,是否可读写及 ...

  3. js构建函数,点击按钮显示div,再点击按钮或其他区域,隐藏div

    这只是一个例子,先看看效果: html代码: <nav> <span class="nav_logo"></span> <h1>云蚂 ...

  4. input 上传图片显示预览、调用摄像头,ios和Android的兼容性解决

    html代码: <img id="pic" src="img/pic.png"/> </span><input id=" ...

  5. lastIndex对正则结果的影响

    前言 今天遇到一个问题,用正则表达式去检查同一个字符串时,交替返回true和false.无奈之下,重新翻了翻权威指南,发现罪魁祸首原来是lastIndex.可在控制台尝试下 let reg = /[\ ...

  6. JavaScript的DOM编程--10--删除节点

    1). removeChild(): 从一个给定元素里删除一个子节点 var reference = element.removeChild(node); 返回值是一个指向已被删除的子节点的引用指针. ...

  7. permission denied for window type 2003

    今天在做系统悬浮窗的时候出现权限拒绝,类型是2003,这里要说下,做系统悬浮窗需要申请权限,6.0以上的 还需要动态申请下,这里我就不过多描述了, 我在申请完权限后仍然不行,这里主要是出现在了这个类型 ...

  8. 原生 js 实现点击按钮复制文本

    最近遇到一个需求,需要点击按钮,复制 <p> 标签中的文本到剪切板 之前做过复制输入框的内容,原以为差不多,结果发现根本行不通 尝试了各种办法,最后使了个障眼法,实现了下面的效果 一.原理 ...

  9. Java的虚方法

    虚方法出现在Java的多态特性中, 父类与子类之间的多态性,对父类的函数进行重新定义.如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding).在Java中,子类 ...

  10. Java学习笔记3(数组)

    1.数组的定义: 第一种: public class ArrayDemo{ public static void main(String[] args){ //定义数组 int [] arr = ne ...