美文网首页
排序算法(一)冒泡算法

排序算法(一)冒泡算法

作者: 在路上的_软件菜鸟 | 来源:发表于2019-07-29 10:21 被阅读0次

在开始学习排序前我们需要明白如下几个知识点:

1.时间复杂度:一个算法执行所需要的时间;

2.空间复杂度:运行完一个算法的过程需要的内存大小;

3.稳定性:稳定的排序,如果待排序的序列中,之前有a,b两个元素并且a=b,在经过了排序算法后,a元素的位置依然在b元素的前方这种排序算法是稳定的;反之这种排序就不稳定;

4.内排序:所有的排序算法都在内存中完成;

5.外排序:待排序的数据非常巨大,因此需要将数据放在磁盘中,在排序过程中需要需要通过磁盘和内存数据的交换才能进行

冒泡排序


冒泡排序属于稳定排序,算法的最佳时间复杂度为O(n),最差的数据复杂度为O(n2),所以时间复杂度为O(n2);同时它属于交换排序,具体思路为:第一次比较从第一个元素起,依次比较相邻的两个元素,如比较第一个元素和第二个元素,如果第一个元素大于第二个元素则交换,依次重复上述操作,在进行完第一轮两两比较后最大的元素在最后一个位置,再进行上述操作,次大的元素在数组的倒数第二个位置;

实现代码如下:

/**

* 冒泡排序

*/

public class BubblingSort {

public void applyOptimize(int[] value) {

if (value ==null || value.length ==0) {

System.out.println("value is null ---------->");

return;

        }

int indexOne, indexTwo, tempValue;

        for (indexOne = value.length -1; indexOne >0; indexOne--) {

for (indexTwo =0; indexTwo < indexOne; indexTwo++) {

if (value[indexTwo] > value[indexTwo+1]) {

tempValue = value[indexTwo];

                    value[indexTwo] = value[indexTwo+1];

                    value[indexTwo+1] = tempValue;

                }

}

}

}

}

可以从几个方面优化冒泡排序算法

1.设置一个标记变量,如果在某一轮两两比较过程中,没有发生元素交换说明数组已经排好序了,算法运算结束;

public void applyOptimize(int[] value) {

if (value ==null || value.length ==0) {

System.out.println("value is null ---------->");

return;

    }

boolean isChange =false;

    int indexOne, indexTwo, tempValue;

    for (indexOne = value.length -1; indexOne >0; indexOne--) {

isChange =false;

        for (indexTwo =0; indexTwo < indexOne; indexTwo++) {

if (value[indexTwo] > value[indexTwo+1]) {

tempValue = value[indexTwo];

                value[indexTwo] = value[indexTwo+1];

                value[indexTwo+1] = tempValue;

                isChange =true;

            }

}

if(!isChange){

return;

        }

}

}

相关文章

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

  • 前端算法学习-第一篇

    冒泡排序算法 冒泡排序算法是最慢的排序算法之一,也是最容易实现的排序算法。之所以叫冒泡排序是因为使用这种算法排序时...

  • iOS算法总结-冒泡排序

    iOS算法总结-冒泡排序 iOS算法总结-冒泡排序

  • python 冒泡排序和选择排序算法

    插入排序算法 冒泡排序算法

  • 基本算法——快速排序算法

    快速排序算法是对冒泡算法的改进。所以我们首先来简单的谈谈冒泡算法。 1.冒泡算法 冒泡排序(Bubble S...

  • Java基础(冒泡排序与选择排序)

    冒泡排序 冒泡排序算法运行起来非常慢,但在概念上它是排序算法中最简单的,因此冒泡排序算法在刚开始研究排序技术时是一...

  • 7.4-全栈Java笔记:三种经典算法

    冒泡排序算法 冒泡排序是最常用的排序算法,在笔试中也非常常见,能手写出冒泡排序算法可以说是基本的素养。 算法重复地...

  • 算法:冒泡排序

    本文内容:1、什么是冒泡排序?2、冒泡排序的 C/OC 实现与算法分析。 算法总目录:算法? 1、什么是冒泡排序?...

网友评论

      本文标题:排序算法(一)冒泡算法

      本文链接:https://www.haomeiwen.com/subject/mayrxctx.html