冒泡排序法与选择排序法,选择排序法和冒泡排序法

首页 > 教育 > 作者:YD1662024-05-15 14:35:05

前言

我们要想成为一个优秀的程序员,其实非常关键的一点就是要锻炼培养自己的编程思维,就好比一个狙击手,要通过大量的射击训练要用大量的子弹喂出来。

同样的,一个优秀的程序员,他的逻辑和编程思维,也是靠大量的训练锻炼出来的,而这个训练经常是通过各种“算法”来实现的。 所以作为一个从零开始学习的小白,我们必然要学习各种编程算法。这些算法,一方面可以锻炼我们的编程思维,另一方面也是为了完成工作,很多项目中都会或多或少的用到一些算法,并且程序员面试时,算法也是必考的一项。 基于这些因素,接下来会给大家介绍一些经典的算法,比如排序、查找算法,当然还会给大家介绍一些经典的数据结构,比如二叉树、红黑树、图等,那么就请各位认真学习吧。

全文大约【4400】 字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富的案例及配图视频,让你更好地理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考...

一. 排序算法

1. 概念

所谓排序,就是使一串记录可以按照其中某个或某些关键字的大小,根据递增或递减的排列起来。而排序算法,就是使得数据按照特定要求排列的方法。我们在开发时常用的排序算法有如下几个:

2. 排序算法分类

以上排序算法都属于内部排序,也就是只考虑较小数据量且仅需使用内存的排序算法,他们之间关系如下图所示:

冒泡排序法与选择排序法,选择排序法和冒泡排序法(1)

因为实际上具体的排序算法非常多,这个是Java的系列学习文章,所以我这里不会把每个算法都讲解到。后面我会出一个专门的算法系列文章,敬请大家持续关注哦。

接下来就以冒泡、插入、选择、快速、希尔等排序算法为例,重点给大家讲解一下排序相关的内容。

二. 冒泡排序

1. 概念

冒泡排序(Bubble Sort),可以说是我们学习编程时必学且知名度最高的一个经典排序算法,同时也是各种考试和面试中出镜率最高的一个排序算法。

首先,我们要知道一点,冒泡排序属于交换排序算法的一种。所谓交换排序算法,是指在排序过程中,要发生数组元素的交换。

之所以要把该算法称为“冒泡算法”,这是因为每个大的元素,每次经过交换都会慢慢“浮”到数组的顶端,故名“冒泡排序”。

冒泡排序的核心思想,是把相邻的元素进行两两比较,当一个元素大于右侧相邻的元素时,就交换它们的位置;当一个元素小于或等于右侧相邻的元素时,则保持位置不变。 大家注意,冒泡排序只会操作相邻的两个数据。每次冒泡操作都是对相邻的两个元素进行比较,看是否满足大小关系。

2. 实现步骤

接下来我们就以一个数值型的数组为例,向大家介绍冒泡排序的整个排序过程。

假设,我们现在有一个待排序的数组,其数组元素值依次为[5,8,6,3,9,,2,1,,7]。如果我们采用冒泡排序算法,按从小到大的规则对其排序,其详细过程会如下所示:

(1). 将5和8进行比较,因为满足左小右大的规则,不需要交换,保持元素位次不变;

(2). 将8和6进行比较,因不满足左小右大的规则,则需要交换。将8和6位置互换,互换位置后,元素6在下标1这个位置上,元素8在下标2这个位置上;

(3). 接着将8和3进行比较,不满足左小右大规则,需要交换。将8和3位置互换,互换位置后,元素3在下标2的位置上,元素8在下标3的位置上;

(4). 继续将8和9进行比较,满足左小右大规则,不需要交换,保持元素位次不变;

(5). 将9和2进行比较,不满足左小右大的规则,需要交换。将9和2位置互换,互换位置后,元素2在下标4的位置上,元素9在下标5的位置上;

(6). 将9和1进行比较,不满足左小右大的规则,需要交换。将9和1位置互换,互换位置后,元素1在下标5的位置上,元素9在下标6的位置上。

(7). 继续将9和7进行比较,不满足左小右大的规则,需要交换。互换位置后,元素7在下标6的位置上,元素9在下标7的位置上。

如果我们把上述的文字描述,转换为图片,则会如下图所示:

冒泡排序法与选择排序法,选择排序法和冒泡排序法(2)

这样就完成了第一轮的交换比较。经过第一轮交换后,元素9作为数列中最大的元素,就像是汽水里的气泡一样浮到了最右侧。接着我们继续如此重复上述的比较过程,每一轮结束后,都会有一个本轮最大的元素被移到了最右侧,如下所示:

冒泡排序法与选择排序法,选择排序法和冒泡排序法(3)

每一轮的排序结果最终会如上图所示,所以最终的排序结果就是最后一排的数值结果。

最后我们来总结下,冒泡排序算法的3个核心步骤:

这样我们就理解了冒泡排序的实现思路和过程,接下来我们再来看看该如何在Java中通过代码实现冒泡排序。

3. 编码实现

我们根据上述冒泡排序算法的文字描述步骤,利用Java语言进行编程实现,代码如下所示:

冒泡排序法与选择排序法,选择排序法和冒泡排序法(4)

首页 123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.