抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

偶然刷到一篇名为《一半人写不出冒泡排序,你的同龄人都躺下了》的文章,其中提到轮子哥毕业去参加面试的时候,第一轮笔试考察冒泡排序,结果现场的一半学生都没写出来。冒泡排序(Bubble Sort),是一种最基础的、最简单直观的交换排序,之所以叫做冒泡排序,是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样。以下为我总结的实现思想和代码,可供参考。

一、冒泡排序的思想

从头开始两两比较,把较大的元素与较小的元素进行交换,每轮把当前最大的一个元素存入到数组当前的末尾。每一趟比较只能确定将一个数归位,如果有 n 个数进行排序,要进行 n-1 趟操作。算法时间复杂度复杂度 O(n)

二、冒泡排序的实现步骤

  1. 定义一个外部循环控制冒泡的轮数(数组.length-1
  2. 定义一个内部循环控制每轮依次往后比较几个位置(数组.length-i-1
  3. 如果当前位置的元素值 > 后一个位置的元素值,两者交换

三、Java 版代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {5, 2, 3, 1};
for (int i = 1; i <= arr.length - 1; i++) {
for (int j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}

四、Python 版代码实现

1
2
3
4
5
6
def bubbleSort(arr):
for i in range(1, len(arr)):
for j in range(0, len(arr) - i):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr

评论



Copyright © 2020 - 2022 Zhihao Zhuang. All rights reserved

本站访客数: 人,
总访问量: