5
5
作为最简单的排序算法之一,冒泡排序给我的感觉就像 Abandon 在单词书里出现的感觉一样,每次都在第一页第一位,所以最熟悉。冒泡排序还有一种优化算法,就是立一个 flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。但这种改进对于提升性能来说并没有什么太大作用。
6
6
7
7
8
- ## 1. 算法步骤
8
+ ## 算法步骤
9
9
10
- 1 . 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
10
+ - 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
11
11
12
- 2 . 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
12
+ - 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
13
13
14
- 3 . 针对所有的元素重复以上的步骤,除了最后一个。
14
+ - 针对所有的元素重复以上的步骤,除了最后一个。
15
15
16
- 4 . 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
16
+ - 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
17
17
18
18
19
- ## 2. 动图演示
19
+ ## 动图演示
20
20
21
21
![ 动图演示] ( res/bubbleSort.gif )
22
22
23
23
24
- ## 3. 什么时候最快
24
+ ## 什么时候最快
25
25
26
- 当输入的数据已经是正序时(都已经是正序了,我还要你冒泡排序有何用啊) 。
26
+ 当输入的数据已经是正序 。
27
27
28
28
29
- ## 4. 什么时候最慢
29
+ ## 什么时候最慢
30
30
31
- 当输入的数据是反序时(写一个 for 循环反序输出数据不就行了,干嘛要用你冒泡排序呢,我是闲的吗) 。
31
+ 当输入的数据是反序时。
32
32
33
+ ## Go 代码实现
33
34
34
- ## 5. JavaScript 代码实现
35
+ ``` go
36
+ func bubbleSort (arr []int ) []int {
37
+ length := len (arr)
38
+ for i := 0 ; i < length; i++ {
39
+ for j := 0 ; j < length-1 -i; j++ {
40
+ if arr[j] > arr[j+1 ] {
41
+ arr[j], arr[j+1 ] = arr[j+1 ], arr[j]
42
+ }
43
+ }
44
+ }
45
+ return arr
46
+ }
47
+ ```
48
+
49
+ ## JavaScript 代码实现
35
50
36
51
``` js
37
52
function bubbleSort (arr ) {
@@ -51,29 +66,13 @@ function bubbleSort(arr) {
51
66
52
67
53
68
54
- ## 6. Python 代码实现
69
+ ## Python 代码实现
55
70
56
- ``` python
71
+ ``` py
57
72
def bubbleSort (arr ):
58
73
for i in range (1 , len (arr)):
59
74
for j in range (0 , len (arr)- i):
60
75
if arr[j] > arr[j+ 1 ]:
61
76
arr[j], arr[j + 1 ] = arr[j + 1 ], arr[j]
62
77
return arr
63
78
```
64
-
65
- ## 7. Go 代码实现
66
-
67
- ``` go
68
- func bubbleSort (arr []int ) []int {
69
- length := len (arr)
70
- for i := 0 ; i < length; i++ {
71
- for j := 0 ; j < length-1 -i; j++ {
72
- if arr[j] > arr[j+1 ] {
73
- arr[j], arr[j+1 ] = arr[j+1 ], arr[j]
74
- }
75
- }
76
- }
77
- return arr
78
- }
79
- ```
0 commit comments