冒泡排序思路分析 | 学习笔记

简介: 简介:快速学习冒泡排序思路分析

开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map :冒泡排序思路分析】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9646


冒泡排序思路分析

 

内容介绍

一、冒泡排序思路分析

二、总结

 

一、冒泡排序思路分析

冒泡的算法(规则)

首先有一个数组 arr=[24,69,80,57,13],规则就是让前面的数和后面的数进行比较,如果前面的数大,则交换。而所谓冒泡就是把最大的数放到最后,第二个最大的数放在倒数第二个的位置,然后以此类推,所以第一轮的外层排序为:

第一轮的排序【外层】

第1次是24和69比较,如果前面的数大,则交换。而24小于69,所以顺序不变,顺序为,

1次比较: [24,69,80,57,13]

第2次6980比较,69小于80,所以顺序仍然不变,顺序为,

2次比较: [24,69,80,57,13]

38057比较,后面的57小于前面的80,所以顺序要做交换,顺序为,

3次比较: [24,69, 57,80, 13]

48013比较,后面的13小于前面的80,所以顺序要做交换,顺序为,

4次比较: [24,69, 57,13,80]

此时80后面已经没有数值,就没有必要进行挪动了。所以经过第一轮比较最大值为80已经确定。第一轮比较后进行第二轮比较,又要从最前面开始比较。

第二轮的排序【外层】

第1次进行24和69的比较,24小于69,所以没有进行位置改变,顺序为,

1次比较: [24,69,57,13,80]

2次进行6957的比较,57小于69,所以要进行位置交换,顺序为,

2次比较: [24,57,69,13,80]

然后进行第3次比较,69比13大,所以进行位置交换,顺序为,

3次比较: [24,57,13,69,80]

此时不会再2进行第4次比较,因为刚刚已经确定80是最大值,没有必要比较,所以第二轮比较进行3次就把第二个大值求出来了。然后进行第三轮比较,第三轮比较是建立在第二轮基础之上的所以又回到最前面。

第三轮的排序【外层】

第1次进行2457的比较,24小于57,不进行位置改变,顺序为,

1次比较: [24,57,13,69,80]

2次进行5713的比较,13小于57,所以要进行位置交换,顺序为,

2次比较: [24, 13,57, 69,80]

3次比较57和69的比较,但是没有必要,比较后位置也不会发生变化,这里确定了第三个值。然后进行第四轮的比较。第四轮比较建立在第三轮之上,所以回到首位置。

第四轮的排序【外层】

1次进行2413的比较,13小于24,要进行位置交换,顺序为,

1次比较: [13,24, 57, 69,80]

此时24没必要和后面继续比较下去,所以没有第五轮比较。这时可以发现五个数据进行四轮比较,而且每一轮比较次数在逐渐减小。

 

二、总结

冒泡排序的规则总结

1、一共会经过数组长度 arr.length-1次的轮数比较,每一轮将会确定一个数的位置。

2、每一轮的比较次数在逐渐的减少,像这个例子第一轮是4次,第二轮是3次,第三轮是2次,第四轮是1次。

3、当发现前面一个数比后面一个数大的时候,就进行了交换。

如果直接总结出规律不描述流程的话思路不是很清晰,所以当遇到比较复杂的问题的时候可以把这个问题适当的写出来,就会很形象了。

接下来进行代码编写:

代码要求:

1先完成能够将最大的数,放到最后。

2.把第二大的数放在倒数第二个位置

以此类推会发现一个规律,找到规律后编写代码为多重循环的形式。计算机的思维往往和人是反的,所以这里应该是先写里层循环再写外层循环。

相关文章
|
3月前
|
算法 索引
二分查找算法案例
二分查找算法案例
21 0
|
7月前
|
算法 搜索推荐
重点算法排序之快速排序、归并排序(上篇)
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。
30 0
|
12月前
|
算法 搜索推荐 JavaScript
【HDU 1425】 一个案例明白冒泡排序和快速排序
【HDU 1425】 一个案例明白冒泡排序和快速排序
84 0
|
12月前
|
人工智能 搜索推荐 算法
个人整理——排序算法及其代码实现
冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。元素相等不交换,如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。 每趟排序必确定一个数值的最终位置。
个人整理——排序算法及其代码实现
|
前端开发
前端学习案例1-选择排序
前端学习案例1-选择排序
28 0
前端学习案例1-选择排序
|
前端开发
前端学习案例2-冒泡排序2
前端学习案例2-冒泡排序2
36 0
前端学习案例2-冒泡排序2
|
搜索推荐
【排序算法】简单选择排序思想分析及代码实现详解
【排序算法】简单选择排序思想分析及代码实现详解
130 0
【排序算法】简单选择排序思想分析及代码实现详解
|
机器学习/深度学习 搜索推荐 算法
【排序算法】冒泡排序(改进版)的思想分析与代码实现详解
【排序算法】冒泡排序(改进版)的思想分析与代码实现详解
217 0
【排序算法】冒泡排序(改进版)的思想分析与代码实现详解
|
算法 API
算法基础学习2——冒泡排序
要比较的每一对元素是相邻的,从下标为0开始,到最后一个元素,如果下标设为 j,则相邻元素下标值为 j +1,搜索到最后一个元素:j+1<a.length,而 a.length - 1 = i ;所以终止条件是 j < i
101 0
算法基础学习2——冒泡排序
|
存储 算法 搜索推荐
【C语言程序设计】知识点汇总7——排序与查找原理与代码(冒泡排序,选择排序,插入排序,二分查找)
【C语言程序设计】知识点汇总7——排序与查找原理与代码(冒泡排序,选择排序,插入排序,二分查找)
140 0