首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js实现常用排序算法 --冒泡排序,选择排序, 插入排序,快速排序,

JavaScript实现十大常用排序算法 冒泡排序 选择排序 插入排序 快速排序 归并排序 希尔排序排序 计数排序排序 计数排序 冒泡排序: 原理 选择排序: 原理: 第一次从待排序的数据元素中选出最小...(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。...以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。...代码如下: // 使用选择排序 const selectSort = (arr) => { let len = arr.length let minIndex,temp for(let i...) 执行结果如下 插入排序 原理: 每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    js实现快速排序

    作者本身也非常注重基础算法能力的培养,除了平常阅读一些算法书籍如《算法导论》、《算法》《数据结构与算法Java语言描述》外,也非常关注一些公众号提供的有关算法的描述跟讲解,但是这些算法的描述一般都是只会给出一些伪代码或者思路...我的公众号里我会不定期的对一些常见算法做讲解,并用js语言实现出来,共读者参考~ ----------- 正文分割线 --------- 快速排序是一种不稳定的排序算法,所谓不稳定就是如果排序的数组里面有相同的数据那么该排序算法也可能会去对这些相同的数据进行位置交换...快速排序是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。...它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列...用JS实现如下:

    2.9K80

    常用排序算法代码兑现

    ,请参考之前五天的推送: 冒泡排序到快速排序做的那些优化 直接选择排序到堆排序做的那些改进 直接插入排序到希尔排序做的那些改进 归并排序算法的过程图解 不基于比较的基数排序原理图解 02 — 兑现代码...当我们详细研究了这些常用排序算法的基本实现原理之后,是时候写出这些排序算法的源代码了,也许这些代码在网上有更高效的实现,不过下面写的这些都是和之前说的算法原理和图都解密切相关,一 一对应的,主要是方便大家的理解...使用了 Java 语言 和 C# 语言实现了这些算法,下面一 一列出。...直接选择排序就是把每轮找出的最小值放到排序区的最后,代码实现简单。...堆排序算法比较容易出错的点: 构建堆函数,左右子节点可能都有,也可能只含有左节点,咖啡色标记的代码排序函数,while遍历时,buildHeap参数中元素个数每次减1,始终从位置0(堆顶)开始调整。

    685110

    js 实现插入排序

    // 插入排序的原理: // 一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。...// 插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增 1 的有序表。...在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 。...// 稳定性:插入排序是判断当元素小于才进行交换,所以为稳定排序 // 冒泡排序是两个两个交换 // 选择排序是每一个和无序数列中的起始位置进行交换 // 插入排序是每一个无序数列中的元素分别和有序数列中的每一个进行对比和交换...} } } console.log(`执行了${count}趟循环`); return arr; } console.log("直接插入排序

    60820

    js 实现选择排序及优化

    // 选择排序 // 原理:进行 n-1 趟 循环,每趟循环中遍历所有未排好序的数,第一趟循环,从第0个元素开始向后遍历,找到 最小的元素,与第1 一个元素进行交换,第二趟,从第 1 个元素开始向后遍历...找到最小值与第2个元素 进行交换,以此类推 // 从而得出规律,每次遍历元素开始位置为 i+1,并维护每轮循环的最小值的索引,一轮循环结束后,通过最小值的索引获取到最小值,与起始位置交换 // 稳定性:因为选择排序每次找到最小值...length < 2) { return arr; } // 定义 count 代表执行了趟循环 let count = 0; // 维护每趟循环中的未排序序列中的最小值...j : minIndex; // 将最小数的索引保存 } // 交换最小中与未排序序列开始遍历的第一个值 temp = arr[i]; arr..., 1, 6, 5])); // 执行了9趟循环 console.log(selectSort([1, 2, 3, 4, 5, 6, 7, 8, 9, 9])); // 执行了9趟循环 // 优化选择排序

    4.5K10

    排序算法Java代码实现(五)—— 快速排序

    本篇内容: 快速排序 快速排序 算法思想: 通过一趟排序将要排序的数据分割成独立的两部分, 其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按此方法对这两部分数据分别进行快速排序, 整个排序过程可以递归进行...代码实现:(递归) /** * */ package com.cherish.SortingAlgorithm; /** * @author acer * */ public class...quickSorting(array,0,array.length-1); printArray(array); } /* * 通过一趟排序将要排序的数据分割成独立的两部分..., * 其中一部分的所有数据都比另外一部分的所有数据都要小, * 然后再按此方法对这两部分数据分别进行快速排序, * 整个排序过程可以递归进行,以此达到整个数据变成有序序列...list[high] = list[low]; } list[low] = temp; return low; } } 实现结果

    1.8K20

    Java冒泡排序代码实现

    Java冒泡排序代码实现 原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。...重复第一趟步骤,直至全部排序完成。...举例说明:要排序数组:int[] arr={6,3,8,2,9,1}; 第一趟排序:     第一次排序:6和3比较,6大于3,交换位置: 3 6 8 2 9 1     第二次排序:...8 1 9 ——————————————————————— 第二趟排序:     第一次排序:3和6比较,3小于6,不交换位置:3 6 2 8 1 9     第二次排序:6和2比较,6大于...————————————————— 冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。

    24820
    领券