0
点赞
收藏
分享

微信扫一扫

scala数据结构和算法-10-计数排序


计数排序的思想是对每一个输入元素x,确定出小于x的元素个数,有了这一信息,就可以把x直接放在它在最终输出数组的位置上,例如,如果有17个元素小于x,则x就是属于第18个输出位置。当几个元素相同是,方案要略作修改。

 

package data

import scala.collection.mutable.ArrayBuffer

object CountSort {
def countSort(comparator:(_,_)=>Boolean)(source:ArrayBuffer[Int])={
val countArray=new Array[Int](getMax(source))
for(i<-0 until countArray.length){
countArray(i)=0
}
for(i<-0 until source.length){
countArray(source(i))=countArray(source(i))+1
}
for(i<-1 until countArray.length){
countArray(i)=countArray(i)+countArray(i-1)
}
val result=new Array[Int](source.length)
for(i<-0 until source.length){
result(countArray(source(i))-1)=source(i)
countArray(source(i))-=1
}
result
}
def getMax(source:ArrayBuffer[Int])={
var max=source(0)
for(i<-1 until source.length){
if(max<source(i)){
max=source(i)
}
}
max+1
}
def main(args: Array[String]): Unit = {
val source=ArrayBuffer(1,10,9,3,8,2,7,4,6,5,4,2)
println(countSort((x:Int,y:Int)=>x<y)(source).mkString(","))
}
}

 

 

 

 

 

举报

相关推荐

0 条评论