zoukankan      html  css  js  c++  java
  • 关于排序算法的记录

    1.选择排序-->比如:既然我的目标是把一堆数字从小到大排,那么我按阶段解决这个问题不就好了么?第一步找到最小的那个数把它放到第一位,第二步在剩下的所有数里再找最小的,把它放到第二位,依次类推

    2.插入排序-->比如:把一个数字插入到一个有序的数组中,假如从右向左,如果小于右边第一个,右边第一个向后移动一位,同理走下去,找到小于等于它的插入即可

    3.堆排序-->堆排序比较有意思,相当于一个二叉树,它的左子节点为2i+1,右子节点为2i+2,它的父节点为(i-1)/2,这样的堆是最小堆,同理可以知道最大堆,堆的删除也挺有意思的,有想法的可以自己去google或者百度看看

    4.二分法-->二分通常可以使得问题的规模减半,比个例子:我们最常见的一个游戏,猜数字。我选定一个数字,在0到100之间,你来猜,如果猜得比选定数字大,我会提示你猜高了,如果比选定数字小,我会提示你猜低了。那么最多需要几次就一定能猜对呢?我们常用的策略就是二分,先报50,如果主持人说低了,那我就知道,这个数字一定位于50,100这个区间,那我再报75。这样每次都能把待选区减少一半.二分法必须在有序情况下才可以进行

    5.快速排序-->快速排序是基于上面二分法进行的,把一个数组(乱序)进行划分成两个数组,一个数组里面全部大于某个下标数,一个全部小于某个下标数,此下标必须在0到数组length之间,然后递归下去进行排序

    以上只是个人认知,如有错误,望评论提出,谢谢

  • 相关阅读:
    设计模式之桥接模式(Java语言描述)
    我和CSDN的那些事
    设计模式之合成模式(Java语言描述)
    CAP原理和BASE思想
    finsh初步
    RTT第一个工程
    时钟芯片默认时间
    嵌入式MCU
    RTT工程管理
    反馈及运放基础了解
  • 原文地址:https://www.cnblogs.com/jianguang/p/7274030.html
Copyright © 2011-2022 走看看