0
点赞
收藏
分享

微信扫一扫

scala数据结构和算法-07-希尔排序


把记录按步长 gap 分组,对每组记录采用直接插入排序方法进行排序。
随着步长逐渐减小,所分成的组包含的记录越来越多,当步长的值减小到 1 时,整个数据合成为一组,构成一组有序记录,则完成排序。

我们来通过演示图,更深入的理解一下这个过程。 

scala数据结构和算法-07-希尔排序_项目源码

 

 

package data

import scala.collection.mutable.ListBuffer

object ShellSort {
def shellSort[T](comparator:(T,T)=>Boolean)(source:ListBuffer[T]):ListBuffer[T]={
var span=source.length/2;
while(span>0){
for(i<-span until (source.length,span)){
for(j<-(span to (i,span)).reverse){
val current=source(j);
val prev=source(j-span);
if(comparator(current,prev)){
source(j-span)=current;
source(j)=prev;
}
}
}
span=span/2;
}
source
}
def main(args: Array[String]): Unit = {
val source=ListBuffer(1,4,3,9,2,8,6,7)
println(shellSort[Int](_<_)(source).mkString(","));
}
}

 

 

 

 

 

举报

相关推荐

0 条评论