资讯专栏INFORMATION COLUMN

Java 数据结构与算法系列之冒泡排序

1treeS / 1669人阅读

摘要:冒泡排序一种运行效率很低的排序算法,然而虽然排序效率低,确实排序入门很重的算法,因为冒泡排序的思路是最简单最容易理解的排序算法了。二冒泡排序定义冒泡排序是一种通过两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止的交换排序。

一、前言

相信大部分同学都已经学过数据结构与算法这门课了,并且我们可能都会发现一个现象就是我们所学过的数据结构与算法类的书籍基本都是使用 C 语言来写的,好像没见过使用 Java 写的数据结构与算法。

带着这个好奇心,我去查了下资料,国内基本找不到使用 Java 写的数据结构与算法书籍,有一本书叫《Java 数据结构与算法》,这本书的代码是使用 Java 实现的,不过这本书是国内的学者翻译国外的书籍写出来的,个人感觉这本书对于初学者来说,还是比较难理解的。

冒泡排序一种运行效率很低的排序算法,然而虽然排序效率低,确实排序入门很重的算法,因为冒泡排序的思路是最简单最容易理解的排序算法了。

二、冒泡排序

1、定义: 冒泡排序是一种通过两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止的交换排序。

2、实现思想: 通过比较两两相邻记录的关键字,将第一个记录的关键字和第二个记录的关键字进行比较,如果后面的比前面的小则交换,然后比较第二个和第三个,依次类推。比完一个循环,最大的那个已经放到了最后的位置,这样就可以对前面N-1个数再循环比较。

下面以一群身高不等的学生为例,如下图所示:

未排序的学生

已排序的学生

冒泡排序第一轮实现过程

三、冒泡排序的 Java 代码实现

1、冒泡排序实现算法:

BubbleSort.java

package BubbleSort;

/**
 *
 * 冒泡排序实现算法
 *
 */
public class BubbleSort {

    public void bubble(Integer[] data){

        for(int i=0;idata[j+1]){
                    int tmp=data[j];
                    data[j]=data[j+1];
                    data[j+1]=tmp;
                }
            }
        }
    }
}

2、冒泡排序测试:

Test.java

package BubbleSort;

import java.util.Arrays;

/**
 *
 * 测试冒泡排序
 *
 */
public class Test {

    public static void main(String[] args) {

        Integer[] list={149,138,165,197,176,113,127,114,110};

        //冒泡排序
        BubbleSort bs = new BubbleSort();
        bs.bubble(list);

        System.out.println("排序前的结果为:" + Arrays.toString(list));
        System.out.print("排序后的结果为:");

        for(int i=0;i

2、测试结果:

关注微信公众号compassblog,了解更多

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

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

相关文章

  • JavaScript算法 ,Python算法,Go算法,java算法,C#算法系列插入排序

    摘要:常见的内部排序算法有插入排序希尔排序选择排序冒泡排序归并排序快速排序堆排序基数排序等。插入排序在实现上,通常采用排序即只需用到的额外空间的排序,因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: showImg(https://segm...

    GeekQiaQia 评论0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,C#算法系列插入排序

    摘要:常见的内部排序算法有插入排序希尔排序选择排序冒泡排序归并排序快速排序堆排序基数排序等。插入排序在实现上,通常采用排序即只需用到的额外空间的排序,因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: showImg(https://segm...

    cgspine 评论0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,C#算法系列插入排序

    摘要:常见的内部排序算法有插入排序希尔排序选择排序冒泡排序归并排序快速排序堆排序基数排序等。插入排序在实现上,通常采用排序即只需用到的额外空间的排序,因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: showImg(https://segm...

    lufficc 评论0 收藏0
  • 轻松读懂数据结构系列:早操排队图解冒泡排序

    摘要:二冒泡排序算法作为这一系列的第一部分,主要讲解排序算法。直到队列全部排好为止。到这里,我想你应该明白了冒泡排序的思想了。 一、说在前面 一直想写一些简单易懂的文章,因为平时看的很多的书籍或者文章都是看着很难受的感觉,当然,这并不是说书籍写的不好,只是说对于一些没有太多基础或者基础不是很好的来说,相对来说还是比较难以理解的。 这个系列主要是写一些简单易懂的数据结构与算法的文章,同时也是帮...

    Shisui 评论0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,系列归并排序

    摘要:常见的内部排序算法有插入排序希尔排序选择排序冒泡排序归并排序快速排序堆排序基数排序等。用一张图概括归并排序英语,或,是创建在归并操作上的一种有效的排序算法,效率为。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: showImg(https://segmentfault.com/img/bVNwuO?w=966&h=...

    zhou_you 评论0 收藏0

发表评论

0条评论

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