您的位置:首页 > 编程语言 > Java开发

学习基数排序之前首先学习计数排序

2015-11-15 00:15 183 查看
  学习基数排序之前首先学习计数排序。

  计数排序假设每个元素都是在0到k之间的一个整数。

  基数排序的基本思想,对于每个元素x,如果我们知道了小于x的元素的个数,就可以确定输出数组中元素x的位置,那么直接将元素x放到输出数组中。比如有3小于x的元素,那在输出数组中,x肯定位于第4个位置。

  计数排序的算法用伪代码描述为:

  17COUNTING-SORT(A,k)

  // 初始化数组C

  for i=0 to k

  C[i]=0

  // 统计A[j]元素出现的次数,保存到C数组中

  for j=0 to A.length

  C[A[j]]=C[A[j]]+1

  // 统计小于等于A[j]元素的个数

  for k=0 to k

  C[K]=C[K-1]+C[K]

  // 将A中的元素放在B中正确的位置

  for i=A.length to 0

  B[C[A[i]]-1]=A[i]

  C[A[i]]=C[A[i]]-1

  注:由于有可能有相同元素存在,所以,每次将A[i]元素放入B数组中,都要将C[A[j]]的值减一,这样当遇到下一个值等于A[j]的元素时,该元素就能放在输出数组中A[j]的前面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java