冒泡排序
冒泡排序是一种交换排序,核心为挨着的两个元素互相进行交换
例如将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;
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个人学习笔试,欢迎指正,后续持续补充中~~