资讯专栏INFORMATION COLUMN

js实现冒泡排序,快速排序,选择排序

bbbbbb / 984人阅读

摘要:用冒泡排序快速排序选择排序冒泡排序冒泡排序是比较经典的排序方法,是一种用时间换空间的排序方法。找到并交换的时候,指针位置不变。选择排序没趟都会产生最小值,它不是相邻元素的比较而是在该元素设置一个索引。选择排序循环找到从开始到最后的最小的数

用js冒泡排序,快速排序,选择排序 1.冒泡排序

冒泡排序是比较经典的排序方法,是一种用时间换空间的排序方法。我总结了一下它的特点:(1)它的时间复杂度是;(2)每一趟相邻元素两两比较完毕就会产生最值(最大值);(3)每次比较完后下一趟就会少一个元素参与比较(即该趟比较的最大值)。
// 冒泡排序

    function maopao(arr){
        for(var i=0;iarr[j]){
                    temp = arr[i];
                    arr[i]=arr[j];
                    arr[j]=temp;
                }
            }
        }
        return arr;
    }
    var arr = [1,9,3,7,2,8,3,99,44,1,6];
    maopao(arr);
    console.log("冒泡排序");
    console.log(arr);
快速排序

// 2.快速排序
一趟快速排序的算法是:   

1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;   

2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0];   

3)从j开始向前搜索,即由后开始向前搜索(j=j-1即j--), 找到第一个小于key的值A[j],A[i]与A[j]交换;   

4)从i开始向后搜索,即由前开始向后搜索(i=i+1即i++), 找到第一个大于key的A[i],A[i]与A[j]交换;   

5)重复第3、4、5步,直到I=J; (3,4步是在程序中没找到时候j=j-1,i=i+1,直至找到为止。 找到并交换的时候i, j指针位置不变。另外当i=j这过程一定正好是i+或j-完成的最后令循环结束)

    function quickSort(arr){
        // 如果数组长度小于等于1,直接返回
        if(arr.length<=1){return arr;}
        // 选择一个基准
        var pivotIndex = Math.floor(arr.length/2);
        // 将基准与原数组分离
        var pivot = arr.splice(pivotIndex,1)[0];
        // 定义左右两个空数组用来存放
        var left = [];
        var right=[];
        // 循环,如果小于基准就放左边,大于基准就放右边
        for(var i=0;i
3.选择排序

选择排序相比冒泡排序不稳定,时间复杂度也是。选择排序没趟都会产生最小值,它不是相邻元素的比较而是在该元素设置一个索引i。然后与数组的其他元素依次比较(除了上一个索引值),直到找到小于该元素(索引j)时交换两元素,接着继续从i索引(此时已经不是原来的数值)值与索引j+1值比较。
// 选择排序

    function selectSort(arr){
        var minIndex;
        var temp;
        // 循环
        for(var i=0;i           
               
                                           
                       
                 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/94708.html

相关文章

  • 冒泡选择快速排序js

    摘要:冒泡排序冒泡排序算法的运作如下比较相邻的元素。交换次数比冒泡排序少多了快速排序快速排序算法的运作如下找一个数,对数组进行扫描,小于这个数的放在这个数的左侧,大于它的放在数组右侧在对左右两侧的数组分别进行刚才的操作,直到数组长度为时结束。 1.冒泡排序 1.1 冒泡排序算法的运作如下: 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素作同样的工作,从开始第...

    codeKK 评论0 收藏0
  • JS数据结构与算法_排序和搜索算法

    摘要:上一篇数据结构与算法树写在前面这是学习数据结构与算法的最后一篇博客,也是在面试中常常会被问到的一部分内容排序和搜索。 上一篇:JS数据结构与算法_树 写在前面 这是《学习JavaScript数据结构与算法》的最后一篇博客,也是在面试中常常会被问到的一部分内容:排序和搜索。在这篇博客之前,我每每看到排序头就是大的,心里想着类似冒泡排序,两层遍历啪啪啪就完事了,然后再也无心去深入研究排序相...

    姘搁『 评论0 收藏0
  • 排序算法分析总结(附js实现

    摘要:本文对一些排序算法进行了简单分析,并给出了的代码实现。平均时间复杂度不好分析,它是冒泡排序是稳定的排序算法。冒泡排序是原地排序算法原地排序指的是空间复杂度是的排序算法。归并排序,会将数组从中间分成左右两部分。 本文对一些排序算法进行了简单分析,并给出了 javascript 的代码实现。因为本文包含了大量的排序算法,所以分析不会非常详细,适合有对排序算法有一定了解的同学。本文内容其实不...

    liaoyg8023 评论0 收藏0
  • 温故js系列(2)-快速排序&插入排序&选择排序&冒泡排序算法&优化

    摘要:优化当待排序序列长度时,使用插入排序,可以加速排序。插入排序原理通过构建有序序列,对于未排序元素,在已排序序列中从后向前扫描,找到相应位置并插入。堆排序可通过树形结构保存部分比较结果,可减少比较次数。 前端学习:教程&开发模块化/规范化/工程化/优化&工具/调试&值得关注的博客/Git&面试-前端资源汇总 欢迎提issues斧正:排序算法 JavaScript-排序算法及简易优化 快速...

    ningwang 评论0 收藏0
  • JS排序算法

    摘要:冒泡排序冒泡算法是比较相邻的两项,如果前者比后者大,就交换他们。插入排序最好情况下时间复杂度是,其他情况下也都是。代码演示插入排序归并排序原生里面的方法,在里面是用归并排序实现的,而在里面是用快速排序的变体来实现的。 1、冒泡排序 冒泡算法是比较相邻的两项,如果前者比后者大,就交换他们。 假设一共有n项,那么一共需要n-1趟,第一趟需要交换n-1次,但是第一趟结束后,最后一项基本确定就...

    notebin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<