美文网首页
计数排序的伪代码

计数排序的伪代码

作者: 夜未央_M | 来源:发表于2018-10-29 14:59 被阅读12次
    //计数排序 计算每一个数值出现多少次,并按入桶出桶原理(先入先出)原则重新排序。
    
    a <- {
      '0':0,
      '1':2,
      '2':1,
      '3':56,
      '4':3,
      '5':67,
      '6':3,
      'length':7,   //这里的数组里面的length并不是里面有多少个数据,而是指数组里面最大序列的编号+1,因为数组是从0开始的!!!
    }
    
    hash <- {}  //我们需要新生成一个hash, 数组也是hash,因为都是一个key对应一个值。
    while index <- 0
    while index < a['length']  //while是循环语句,是指当满足这一条件的时候,该区域代码将重复执行,知道不满足条件为止。这里是说如果我们的index < a['length']  例如我们这里 index6(a0~a6) < 7(a['length'])
      number <- a[index]
      if hash[number] < == undefined      // 检测 hash[number]数值在hash中是否存在, 比如a[index1]对应的数值是2,所以我们检测 hash[2] 是否存在,如果没有的话 执行...  
        hash[number] = 1
    
      else
        hash[number] = hash[number] + 1
      
      end
      
    index2 <- 0     // index2  是hash左边的序列号的统称,也就是容器的编号,也是从0号开始的
    max <- findMax(a)  //找出a数组的最大值比如我们例子中最大值是67,虽然最大值是67,所以67在hash中的序号是67,但是在hash中,length并不是67,因为hash也是从0开始的数组。
    newArr <- {}
    while index2 < max + 1       //while是循环语句,是指当满足这一条件的时候,该区域代码将重复执行,知道不满足条件为止。 例如这里最大值虽然最大值是67,所以67在hash中的序号是67,但是在hash中,length并不是67,因为hash也是从0开始的数组。所以是 最大值 + 1  count <- hash[index2]     //将hash[index2]也就是hash序列右边的数值赋予一个到 count的变量中
      count = hash[index2]       //将hash数组中,序号对应的右边的值赋值给count这个变量,有可能存在这个变量也就是hash[index2] 无值的情况。所以下面那句给了个条件,也就是a数组里面的每一个数值都在hash中的序列中。例如a数组中并没有5这个值,那么在hash[index5]对应的count就是不存在的。
      if count != undefined      // 条件语句,undefined (adj. 未阐明的; 未限定的); 如果 count 不是 未定义的,则执行下列语句。其实该句是由 if count = undefined的反推,如果count不等于undefined,我们将会做这些事情。
        countIndex <- 0           // 在满足上面的if条件语句下,count最少是1,也就是桶里面产生了一个数据处于桶的最下方,所以我们先给他定义countIndex[0],也有可能桶里面存在多个数值,那么就会有countIdext[0,1,2,3,4,5,6]多个值的情况,0排在最底层,依次往上。
        while countIndex < count   // 循环语句,该循环是进入桶里面循环的句子,当count的序号值小于 count数量的时候
          newArr.push(index2)      //给新的数组推一个hash[index2]对应的数值
          countIndex <- countIndex + 1      //然后桶里面数值对应的序号也就是countIdex 递增+1
        end
      end
      index2 <- index2 + 1     //进入下一个桶里面
    end
    print newArr //打印newArr数组里面的数值
    

    相关文章

      网友评论

          本文标题:计数排序的伪代码

          本文链接:https://www.haomeiwen.com/subject/zjmbtqtx.html