经典算法
文章平均质量分 56
鱼儿跳
这个作者很懒,什么都没留下…
展开
-
JS实现快速排序(2种方法)
1、用i和j两个指针2、用一个指针判断,大的放在右边,小的数放在左边 quickSort var arr=[12,20,5,16,15,1,30,45,23,9]; var start = 0; var end = arr.length; console.log('arr:' +arr); function quickSort(arr,low,high){ va原创 2017-06-29 20:49:28 · 4611 阅读 · 0 评论 -
JS实现希尔排序
希尔(Shell)排序又称为缩小增量排序,它是一种插入排序。它是直接插入排序算法的加强版。希尔排序的基本思想:把记录按步长 gap 分组,对每组记录采用直接插入排序方法进行排序。随着步长逐渐减小,所分成的组包含的记录越来越多,当步长的值减小到 1 时,整个数据合成为一组,构成一组有序记录,则完成排序。例子:9 1 2 5 7 4 8 6 3 5gap是步长,也就是两个数原创 2017-07-01 21:58:37 · 2174 阅读 · 0 评论 -
JS实现归并排序
归并排序是---将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。一般采用二路归并。归并排序其实要做两件事:(1)“分解”——将序列每次折半划分。(2)“合并”——将划分后的序列段两两合并后排序。这两个有序序列段分别为 R[low, mid] 和 R[mid+1, high]。原创 2017-07-01 22:06:46 · 745 阅读 · 0 评论 -
JS实现堆排序
【概念】堆是一棵顺序存储的完全二叉树。堆排序分为两种:1)大根堆:所有的叶子不大于根。Ri >= R2i+1 且 Ri >= R2i+2 (大根堆)2)小根堆:所有的叶子不小于根。Ri 且 Ri 小根堆)其中i=1,2,…,n/2向下取整; 当前节点为R[i],左孩子是R[2*i+1],右孩子是R[2*i+2]。父结点是R[(i-1)/2]。【思想】原创 2017-07-05 16:38:43 · 408 阅读 · 0 评论