您的位置:首页 > 其它

Scala练习-希尔排序

2017-06-28 22:48 197 查看
参考文章:

白话经典算法系列之三 希尔排序的实现

ShellSort

package day14

/**
* Created by doctorq on 2017/6/28.
* 希尔排序:缩小增量排序
* 时间复杂度nlog2n~n2之间
*/
object ShellSort extends App with Utils {

def sort(unSort: Array[Int]): Array[Int] = {
var step = unSort.size / 2

while (step > 0) {
//分成的子数组个数为step
for (i <- 0 until step) {
//某个子数组采用插入排序算法进行排序
for (j <- i + step to(unSort.size - 1, step)) {
//直接插入排序
if (unSort(j) < unSort(j - step)) {
var k = j - step
while (k > 0 && unSort(k + step) < unSort(k)) {
swap(unSort, k, k + step)
k -= step
}
}
}
}
step /= 2
}

unSort
}

val list = Array(1, 4, 3, 5, 7, 3, 6, 8, 9, 23, 4, 5, 7, 2, 4, 5, 6, 7, 78, 3, 4)
printlnArray(sort(list))

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: