关于排序算法的记录

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

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

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

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

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

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

原文地址:https://www.cnblogs.com/jianguang/p/7274030.html