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

来源:互联网 发布:高仿鞋淘宝上怎么找 编辑:程序博客网 时间:2024/06/05 10:43

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

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



package dataimport scala.collection.mutable.ListBufferobject 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 0
原创粉丝点击