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

js实现快速排序

我的公众号里我会不定期的对一些常见算法做讲解,并用js语言实现出来,共读者参考~ ----------- 正文分割线 --------- 快速排序是一种不稳定的排序算法,所谓不稳定就是如果排序的数组里面有相同的数据那么该排序算法也可能会去对这些相同的数据进行位置交换...快速排序是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。...它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列...用JS实现如下:

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

    js 实现插入排序

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

    61320

    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

    JS实现自定义排序

    (3)如果两个字符串相等,或根据本地排序规则没有区别,该方法返回 0。   说明:把 运算符应用到字符串时,它们只用字符的 Unicode 编码比较字符串,而不考虑当地的排序规则。...实例: 1、可以使用localeCompare() 方法来实现中文按照拼音排序,方法相当简单 var array = ['白鸽', '麻雀', '大象', '狗', '猫', "鸡"]; array =...item2) { return item1.localeCompare(item2); }); //["白鸽", "大象", "狗", "鸡", "麻雀", "猫"]   而且可以通过如下代码实现中文按照拼音排序...,之后再通过循环和布局就可以实现电话薄的功能。...2、实现字母、数字的混合排序: var d = [1,2,3,'a','k','b','d',10,20,'c'] d.sort(function(a,b){ var c = isFinite

    1.9K20

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

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

    2K20

    Js排序算法_js 排序算法

    它的时间复杂度也是 O(nlogn),但它在时间复杂度为 O(nlogn) 级的几种排序算法中,大多数情况下效率更高,所以快速排序的应用非常广泛。...复杂度: 快速排序的方法复杂度有时间复杂度和空间复杂度。 时间复杂度往往是决定一个算法优劣的最重要出发点,空间复杂度在当今的计算机上已经没有那么大的影响力了。...快速排序的一次划分算法从两头交替搜索,直到low和high重合,因此其时间 复杂度是O(n) ; 而整个快速排序算法的时间复杂度与划分的趟数有关。...空间复杂度在快速排序中平均也是O(log2n))。 从空间性能上看,尽管快速排序只需要一个元素的辅助空间,但快速排序需要一个栈空间来实现递归。...JavaScript实现五种排序算法 关于快速排序的不稳定性说明 JavaScript实现十大排序算法(附有更好理解的GIF动态图) 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人

    25.2K20

    js 实现冒泡排序及优化方案

    // 冒泡排序 // 原理就是每一轮循环,将一个最大的值放冒泡到最后 // 1.每一趟都是比较相邻两个元素,如果后一个元素大于前一个,则交换两个元素 // 2.第一趟从第一个元素开始进行交换,最后一个元素不参与交换...if (arr.length < 2) { return arr; } // 定义 count 代表执行了趟循环 let count = 0; // 冒泡排序排的趟数...则代表排好了几个元素 for (let j = 0; j < arr.length - 1 - i; j++) { // 在大于的时候才会交换,等于的时候不交换,所以冒泡排序属于稳定排序算法...则代表排好了几个元素 for (let j = 0; j < arr.length - 1 - i; j++) { // 在大于的时候才会交换,等于的时候不交换,所以冒泡排序属于稳定排序算法...排了多少趟,则代表排好了几个元素 for (let j = 0; j < sortBorder; j++) { // 在大于的时候才会交换,等于的时候不交换,所以冒泡排序属于稳定排序算法

    76030
    领券