• scala 排序算法 希尔排序


    package com.xing.hai
    
    /**
      * Created by xxxxx on 2/22/2017.
      * Scala 语言中提供的数组是用来存储固定大小的同类型元素
      * 数组的第一个元素索引为0,最后一个元素的索引为元素总数减1。
      * 希尔排序 也叫最小增量排序
      *
      * 算法先将要排序的一组数按某个增量 d(n/2,n为要排序数的个数)分成若
      * 干组,每组中记录的下标相差 d.对每组中全部元素进行直接插入排序,
      * 然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。
      * 当增量减到 1 时,进行直接插入排序后,排序完成。
      */
    object OrderHashSort extends App{
      val sortArray = Array(49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51,43)
      var d1:Int = sortArray.length
      var booleanX = true
      sortArray.foreach( x => print(" "+ x))
      println()
      while(booleanX){
        d1 = Math.ceil(d1 / 2).toInt
        val d= d1
        if(d == 1){
          booleanX = false
        }
        var sortTemp  = 0
        for(x <- 0 until  d ){
          for( i <- Range((x + d) , sortArray.length ,d)){
            var j = i - d
            sortTemp = sortArray(i)
            while(j>=0 && sortArray(j) > sortTemp){   //这里因为没有java 的 for  强大功能
                sortArray(j+d) =sortArray(j)          //比较如果不大于的话 ,最后又把值付给自个
                j -=d
            }
            //println( "x = "+ x + " i= " + i + " d =  " + d + " j = " + j )
            sortArray(j+d) = sortTemp
            sortArray.foreach( x => print(" "+ x))
            println()
          }
        }
      }
    
    }
    
    

  • 相关阅读:
    NEON中的L可以避免溢出
    编译Qualcomm的Hexagon exampls错误
    C语言中的static
    在非NDK编译条件下使用Android Log函数
    NEON的vsub方法溢出
    OpenCL中读取image时的坐标
    Ubuntu16.0 GTX1660Ti 安装NVIDIA CUDA cuDNN Tensflow
    修改so库中的依赖名
    Qt数据库总结
    Qt插件系统
  • 原文地址:https://www.cnblogs.com/TendToBigData/p/10501279.html
Copyright © 2020-2023  润新知