高德纳在《计算机程序设计艺术》里对算法归纳为以下几点:
输入: 一个算法必须有零或以上的输入量 输出: 一个算法应有一个或以上的输出量 明确性: 算法的描述必须无歧义,实际运行结果是确定的 有限性: 必须在有限个步骤内结束 有效性: 又称可行性,能够被执行者实现
如果想详细研究算法推荐《数据结构与算法分析》
也就是需求:
数组array含有N个正整数
输入量为array
请将array中的数字从小到大排列
输出量为排好序的数组
代码例子
var array = [5,2,4,6,8] function sort(){ 你的代码 } sort(array) // [2,4,5,6,8]
当你遇到思路障碍怎么办\?
重复地比较要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。比较数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。每比较一整轮,最大的都会出现在最后故名---冒泡排序
流程如下:
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
流程如下:
将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序。是稳定的排序方法。
流程如下:
将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。
流程如下:
每个元素找到自己对应的位置(前面的都比我小,后面的都比我大)
流程如下:
顾名思义,就是在快速排序的基础上,加入随机的机制.
在快速排序的时候我们是从左到右来选取比较对象,在随机快速排序中我们是随机来选取对象.
流程如下:
饥人谷一直致力于培养有灵魂的编程者,打造专业有爱的国内前端技术圈子。如造梦师一般帮助近千名不甘寂寞的追梦人把编程梦变为现实,他们以饥人谷为起点,足迹遍布包括facebook、阿里巴巴、百度、网易、京东、今日头条、大众美团、饿了么、ofo在内的国内外大小企业。 了解培训课程:加微信 xiedaimala03,官网:https://jirengu.com
本文作者:饥人谷方应杭老师