Java冒泡排序法
冒泡排序法:
概念:
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
代码实现(以蓝桥杯中的问题为例!):
1 /** 2 问题描述 3 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200 4 输入格式 5 第一行为一个整数n。 6 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。 7 输出格式 8 输出一行,按从小到大的顺序输出排序后的数列。 9 样例输入 10 5 11 8 3 6 4 9 12 样例输出 13 3 4 6 8 9 14 **/ 15 import java.util.Scanner; 16 17 public class Main { 18 public static void main(String[] args) { 19 Scanner sc = new Scanner(System.in); 20 int n = sc.nextInt(); 21 if (n >= 1 && n <= 200) { 22 int[] a = new int[n]; 23 for (int i = 0; i < n; i++) { 24 a[i] = sc.nextInt(); 25 if(a[i]<-10000||a[i]>10000){ 26 return; 27 } 28 } 29 30 // 这里为最主要的部分 31 for (int i = 0; i < a.length - 1; i++) { 32 for (int j = 0; j < a.length - i - 1; j++) { 33 if (a[j] > a[j + 1]) { 34 int temp = a[j]; 35 a[j] = a[j + 1]; 36 a[j + 1] = temp; 37 } 38 } 39 } 40 for (int i = 0; i < a.length; i++) { 41 System.out.print(a[i] + " "); 42 } 43 44 } 45 } 46 }
优缺点:
优点:比较简单,空间复杂度较低,相比于其他的排序方法,是比较稳定的
缺点:时间复杂度相对来说较高,相比于其他的排序方法,效率比较慢