`
这些年
  • 浏览: 402313 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

zy19982004--数据结构与算法学习一:冒泡排序

 
阅读更多

一.排序方法

  1. 将被排列的数组data[0...n]垂直排列,每个元素data[i]看作是一个气泡,气泡的重量就是data[i]的值。
  2. 从最下面一个气泡data[n]开始扫描,比较其与上一个气泡data[n-1]的重量,data[n] < data[n-1]则交换;然后比较data[n-1]与data[n-1-1]...一轮下来,最轻的气泡跑到了最上面data[0]的位置。
  3. 重复2过程,让第二轻的气泡跑到data[1]的位置;再次重复...

 

二.动画演示

      http://student.zjzk.cn/course_ware/data_structure/web/flashhtml/maopaopaixu.htm

 

 

三.Java代码

 

Java代码  收藏代码
  1. public static int[] bubbleSort(int[] data) {  
  2.     int temp = 0;  
  3.     for(int i=0; i < data.length -1; i++) { //每一轮  
  4.         boolean exchange = false;           //每一轮设置一个是否有元素交换的标志  
  5.         int j = data.length -1;  
  6.         for(; j > i; j--) {  
  7.             if(data[j] < data[j-1]) {        //元素和上一个元素比较  
  8.                 temp = data[j];  
  9.                 data[j] = data[j-1];  
  10.                 data[j-1] = temp;  
  11.                 exchange = true;            //有元素交换  
  12.             }  
  13.         }  
  14.         if(!exchange) {                     //如果一轮下来,没有元素交换,说明data已经是排好序了,无需进行下一轮  
  15.             break;  
  16.         }  
  17.     }  
  18.     return data;  
  19. }  

 

 

四.时间复杂度和稳定性

  1.  最好时间复杂度
    1. 若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数C和记录移动次数M均达到最小值。
    2. Cmin=n-1=O(n)
    3. Mmin=0
    4. 冒泡排序最好的时间复杂度为O(n)
  2. 最坏时间复杂度
    1. 若初始文件是反序的,需要进行n-1趟排序。每趟排序要进行n-i次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值。
    2. Cmax=n(n-1)/2=O(n2)
    3. Mmax=3n(n-1)/2=O(n2)
    4. 冒泡排序的最坏时间复杂度为O(n2)
  3. 平均时间复杂度
    1. O(n2)
  4. 冒泡排序是就地排序,且它是稳定的。

五.算法优化

  1. 设置exchange标志。如果不设置,Cmin=n(n-1)/2=O(n2)
分享到:
评论

相关推荐

    ZY08-C循迹、红外避障、遥控综合程序代码

    程序中可能包含对传感器数据的实时处理,如PID(比例-积分-微分)算法,以确保精确跟踪。此外,还可能涉及传感器阵列的布局优化,以提高在各种环境下的追踪性能。 二、红外避障 红外避障是利用红外线传感器探测...

    ZY3-01星SC产品命名规范20160217.pdf

    综上所述,ZY3-01星SC产品的命名规则详细规定了卫星数据的结构化表示方法,通过这些规则,用户能够快速识别出数据的基本特征,如成像时间、产品级别、波段配置等关键信息,从而方便后续的数据管理和应用。

    ZY08-C循迹 寻黑线程序_keilc51_zy08-c智能循迹_黑线循迹程序_ZY08C智能循迹_

    总的来说,ZY08-C循迹寻黑线程序是一个集成了硬件感知、软件控制和智能算法的综合项目,它展示了单片机在自动化控制领域的应用,对于学习单片机编程、智能小车设计以及传感器应用的人来说,是一个很好的实践案例。

    6、ZY08-C循迹、红外避障、遥控综合程序.rar_51单片机 循迹避障 红外遥控_zy08-c_红外遥控小车

    综上所述,这个项目涵盖了51单片机编程、传感器应用、控制算法设计和无线通信等多个方面,是学习和实践嵌入式系统开发的一个好案例。通过研究和理解这个项目,你可以掌握如何利用51单片机实现复杂的自动化任务,并为...

    9.ZY08-C智能小车配套例程代码.zip

    "9.ZY08-C智能小车配套例程代码.zip"是一个压缩包文件,包含了为这种特定型号智能小车设计的功能程序和相关的注释。这些代码是实现小车智能化运作的关键,通过分析和理解这些代码,我们可以深入学习智能小车的工作...

    ZY08-C循迹加红外避障综合程序代码

    【ZY08-C循迹加红外避障综合程序代码】是一...总之,ZY08-C循迹加红外避障综合程序是一个集成了多种技术的智能控制系统,涵盖了硬件接口、传感器数据处理、运动控制等多个方面,体现了嵌入式系统设计的复杂性和综合性。

    ZY-Player-Setup-2.7.2.zip

    【ZY-Player-Setup-2.7.2.zip】是一个媒体播放器的安装包,它具有内置的资源搜索功能,让用户无需在多个平台之间切换,即可方便地找到并播放所需的多媒体内容。这款软件名为ZY Player,版本号为2.7.2,其核心特点是...

    ZY08-C循迹 寻黑线程序代码

    【ZY08-C循迹寻黑线程序代码】是一个针对智能小车或机器人设计的程序,主要用于让设备能够沿着黑色线条行走,这类技术在自动导航、玩具车竞赛、教育项目等领域有着广泛应用。在这个程序中,核心是通过传感器检测地面...

    RF-SJ-ZY-04-F03 结构专业图纸审查标准及要点.zip

    综上所述,《RF-SJ-ZY-04-F03 结构专业图纸审查标准及要点》是一份详尽的指导资料,它对于提升结构专业图纸审查的质量,保障建筑项目的顺利进行具有重要意义。在实际操作中,应结合具体情况灵活运用,不断学习和总结...

    ZY-Player-Setup-2.6.4.exe

    ZY-Player-Setup-2.6.4.exe

    程序设计语言ZY1906-大作业.7z

    学习者可能需要展示他们对编程语言的掌握程度,包括语法、数据结构、算法以及编程最佳实践。 【压缩包子文件的文件名称列表】:ZY1906-大作业,只有一个文件名,这可能是一个包含所有作业相关文件的主目录或文件,...

    ZY6400-23.5/45型液压支架的回收工艺

    为了提高资源采出率,确保矿井安全高效生产,实现厚煤层一次采全高,平煤股份决定在十二矿上马一套大型综采设备。该套设备采用ZY6400-23.5/45型液压支架,最大采高达4.5 m。由于十二矿井下主要巷道断面较小,支架必须解体...

    ZY4200-17/38支架前梁损坏原因分析与处理

    ZY4200-17/38支架是一种二柱式掩护支架,其顶梁部分配备了伸缩装置,能够适应不同地质条件下的顶板支护需求。前梁作为支护系统的前沿部分,常常直面破碎不稳定顶板带来的直接压力。前梁机构是由前梁、伸缩梁、导向梁...

    ZY08-C机器人灭火程序程序代码

    【ZY08-C机器人灭火程序程序代码】是一个专为机器人灭火比赛设计的软件控制系统,它涉及到的领域包括机器人控制、传感器应用、算法设计以及编程语言的运用。在深入理解这个程序之前,我们需要对以下几个关键知识点有...

    ZY08-C红外避障程序代码

    【ZY08-C红外避障程序代码】是一个专门用于机器人或自动化设备...综上所述,【ZY08-C红外避障程序代码】涵盖了红外传感技术、数据处理、算法设计、控制逻辑等多个方面,对于理解和应用智能避障系统有着重要的学习价值。

    ZY-Player-Setup-2.8.0.exe

    zy-player PC端

    ZY-TP21便捷式打印机驱动(ZY-TP21驱动程序)最新安装版

    ZY-TP21便捷式打印机驱动是一款嵌入式微型打印机,这款打印机体积小,重量轻,噪音低,易集成,操作简单,可靠性强,这里介绍的正是针对这款打印机的驱动,ZY-TP21便捷式打印机驱动,有需要的朋友们快来下载吧。...

    参考资料-表19 ZY13-2钢材试验报告汇总表.zip

    标题中的“参考资料-表19 ZY13-2钢材试验报告汇总表.zip”表明这是一个关于钢材试验数据的压缩文件,其中包含了名为“表19 ZY13-2钢材试验报告汇总表.doc”的文档。这个文件很可能是工程或材料科学领域的一个重要...

    RF-GC-ZY-04-F01 房屋验收记录单.zip

    这个压缩包文件名为"RF-GC-ZY-04-F01 房屋验收记录单.zip",暗示其内容可能包含了一份关于房屋验收过程的详细记录单,通常以文档形式存在,例如这里的"RF-GC-ZY-04-F01 房屋验收记录单.doc"。 房屋验收是建筑工程中...

    ZY08-C寻光程序代码

    【ZY08-C寻光程序代码】是一种专为特定任务设计的编程代码,可能是用于机器人导航、自动化设备或光学传感器的应用。在这个项目中,“寻光”可能指的是程序能够追踪光源或者定位光的方向,以实现自动化的移动或操作。...

Global site tag (gtag.js) - Google Analytics