冒泡排序

冒泡排序

冒泡排序是一种交换排序,核心为挨着的两个元素互相进行交换
例如将1 2 7 5 4 6排序得到升序结果
第一轮

  • 1和2是升序,不交换
  • 2和7是升序,不交换
  • 7和5是降序,交换,得到 1 2 5 7 4 6
  • 7和4是降序,交换,得到 1 2 5 4 7 6
  • 7和6是降序,交换,得到 1 2 5 4 6 7
    得到第一轮冒泡结果 1 2 5 4 6 7
    第二轮
  • 1和2是升序,不交换
  • 2和5是升序,不交换
  • 5和4是降序,交换,得到 1 2 4 5 6 7
  • 5和6是升序,不交换
    得到第二轮冒泡结果: 1 2 4 5 6 7

第三轮

  • 1和2是升序,不交换
  • 2和4是升序,不交换
  • 4和5是升序,不交换
    得到第三轮冒泡结果: 1 2 4 5 6 7

第四轮

  • 1和2是升序,不交换
  • 2和4是升序,不交换
    得到第四轮冒泡结果: 1 2 4 5 6 7

第五轮

  • 1和2是升序,不交换
    得到第五轮冒泡结果: 1 2 4 5 6 7

最终结果即为:1 2 4 5 6 7

点此链接,可以查看在线效果图

堆排序

Java代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package org.example.sort;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

/**
* @author ShaoYJ
* @date 2022/10/6 周四
* @desc 核心思想两两交换, 升序排列
*/
public class BubbleAlgorithm {

public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<>();
System.out.print("输入一串数字,空格分开,以#结束:");
while (!sc.hasNext("#")) {
int a = sc.nextInt();
list.add(a);
}

for (int i = 1; i < list.size(); i++) {
for (int j = 0; j < list.size() - i; j++) {
if (list.get(j + 1) < list.get(j)) {
int tmp = list.get(j);
list.set(j, list.get(j + 1));
list.set(j + 1, tmp);
}
}
}
for (Integer i : list) {
System.out.println(i);
}

}
}

GitHub个人学习笔试,欢迎指正,后续持续补充中~~


冒泡排序
http://oowatermelon.github.io/OoWaterMelonS/2022/10/06/冒泡排序/
作者
OoWaterMelonS Shao
发布于
2022年10月6日
许可协议