![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
经典排序算法总结
文章平均质量分 51
fendou_dexiaoniao
这个作者很懒,什么都没留下…
展开
-
JS实现冒泡排序
以下是学习参考http://blog.csdn.net/morewindows/article/details/6657829后自己做的一个知识整理,以帮助自己消化冒泡排序是非常容易理解和实现,,以从小到大排序举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后原创 2015-06-19 10:25:54 · 358 阅读 · 0 评论 -
JS实现归并排序
归并排序:其基本思想是分治策略,先进行划分,然后再进行合并。假设要对数组C进行归并排序,步骤是:1.先将C划分为两个数组A和B(即把数组C从中间分开)2.再分别对数组A、B重复步骤1的操作,逐步划分,直到不能再划分为止(每个子数组只剩下一个元素),这样,划分的过程就结束了。如: [12 20 30 21 15 33 26 19 40 25]划分为:原创 2015-06-22 16:33:55 · 5368 阅读 · 1 评论 -
JS实现快速排序
快速排序也采用了分治的策略,它的基本思想是:1.先从序列中取出一个数作为基准数2.将序列中比基准数大的数放在基准数的右边,小于或等于基准数的数放在基准数的左边3.再对左右区间重复第二步,直到各区间只有一个数。举例:对[20 40 35 28 60 48 55 50 17 67]进行快速排序第一步:选择中间数60作为基准数(基准可以任意选取)20 40 35 28 【60】原创 2015-06-23 10:40:50 · 358 阅读 · 0 评论 -
JS实现直接插入排序
直接插入排序:把数组分为已排序和未排序两部分,把未排序的元素一次一个插入到已排序部分的合适位置上。已排序部分逐渐增大,直到整个数组变成有序的。设数组为a[n]。1.初始时,a[0]自成1个有序区,无序区为a[1]、a[2]...a[n-1]。令i=12.将a[i]并入当前的有序区a[0]、a[1]...a[i-1]中形成a[0]、a[1]...a[i]的有序区间。3.i++并重复第原创 2015-06-21 09:57:58 · 667 阅读 · 0 评论 -
JS实现直接选择排序
直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。第一趟从0到n-1中找到最小的元素,假设为a[min],把a[min]与a[0]交换,这时a[0]是最小的了。第二趟从1到n-1中找到最小的元素(a[0]已经是有序的了,我们不用再管它),把原创 2015-06-21 10:49:17 · 528 阅读 · 0 评论 -
JS实现希尔排序
希尔排序:将无序数组分割成若干子序列,子序列不是逐段分割的,而是相隔特定增量的子序列,对各个子序列进行插入排序,然后再选择一个更小的增量,再将之前排序后的数组按这个增量分割成多个子序列,...,不断选择更小增量,直到增量为1时,再对序列进行一次插入排序,使序列最终成为有序序列,排序完成。以下实例展示希尔排序的过程:这里的首选增量为n/2,每次增量为原先的1/2,直到增量为130 80原创 2015-06-22 10:43:13 · 929 阅读 · 0 评论