首页 > 代码库 > 算法-java代码实现计数排序
算法-java代码实现计数排序
计数排序
第10节 计数排序练习题
对于一个int数组,请编写一个计数排序算法,对数组元素排序。
给定一个int数组A及数组的大小n,请返回排序后的数组。
测试样例:
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
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代码实现计数排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。