数据结构与算法 — 大O表示法、冒泡排序、选择排序、插入排序

本文介绍了大O表示法及其在算法效率评估中的应用,详细讲解了冒泡排序、选择排序和插入排序的思路、代码实现以及效率分析。冒泡排序和选择排序的时间复杂度均为O(N²),而插入排序在平均情况下时间复杂度为O(N²),但在最佳情况下为O(N)。

目录

一、大O表示法

二、排序算法

三、冒泡排序

  1.冒泡排序的思路

  2.代码实现 

  3.冒泡排序的效率

四、选择排序 

  1.选择排序的思路

  2.代码实现

  3.选择排序的效率

五、插入排序

  1.插入排序的思路

  2.代码实现

  3.插入排序的效率


一、大O表示法

        在算法的描述中,数据项的个数发生变化时,算法的效率会跟着改变,可以通过粗略的度量来描述计算机算法的效率,这种粗略的度量被称为“大O表示法”

        大O表示的形式:

 

        大O符号表示的时间复杂度: 

 

 

        推导大O表示法的方式:

  1. 用常量1取代运行时间中所有的加法常量
  2. 在修改后的运行次数函数中,只保留最高阶项
  3. 如果最高存在且不为1,则去除与这个项相乘的常数

二、排序算法

        将数据放置在某个数据结构中存储起来以后,就可以需要根据需求对数据进行不同方式的排序。排序算法有很多种,比如:冒泡排序选择排序归并排序计数排序基数排序希尔排序堆排序桶排序等等。简单排序有:冒泡排序、选择排序、插入排序等;高级排序有:希尔排序、快速排序等

创建列表类:

    //创建列表类
    function ArrayList() {
        //属性
        this.array = []
    }
    //方法
    //将数据可以插入到数组中的方法
    ArrayList.prototype.insert = function (item) {
        this.array.push(item)
    }
    //toString
    ArrayList.prototype.toString = function () {
        return this.array.join('-')
    }

三、冒泡排序

  1.冒泡排序的思路

        如下图所示,对未排序的各元素从头到尾依次比较相邻的两个元素大小关系。如果左边的队员高,则两队员交换位置。向右移动一个位置,比较接下来的两个队员。当走到最右端时,最高的队员一定被放在了最右边。按照这个思路,从最左端重新开始,这次走到倒数第二个位置的队员即可。依次类推,就可以将数据排序完成。

        第一次找出最高的人放在最后,需要两个两个数据项进行比较,这是一个循环操作。第二次将次高的人找到放在倒数第二个位置,也是两个两个进行比较, 只是不和最后一个比较(少了一次比较),但是前面的两个两个比较也是一个循环操作。第三次、第四次比较也同理。这种排序是循环中嵌套循环,并且被嵌套的循环次数越来越少的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值