冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
/*大致过程 j=0; 原数组:11 5 42 4 51 8 46 1和2换 5 11 42 4 51 8 46 2和3不换 3和4换 5 11 4 42 51 8 46 4和5不换 5和6换 5 11 4 42 8 51 46 6和7换 5 11 4 42 8 46 51 j=1 ...... */ public class BubbleSort { public static void main(String[] args) { int[] array = new int[]{11, 5, 42, 4, 51, 8, 46,}; int temp;//用于存储需要调换的元素 boolean Flag=true; for (int i=0;i<array.length-1;i++) //减1是因为例如: // 7个元素只需调换6次,没有减1也可以, // 因为到i=7时下面的for的条件也不满足了。 { for (int j=0;j<array.length-1-i;j++)//减1是因为例如: // 7个元素只需调换6次, // 减i是因为到每遍历一遍就会从后排好一个元素的位置 { if (array[j]>array[j+1]) { temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } } for (int i=0;i<array.length;i++) { System.out.print(array[i]+" "); } } }
import java.util.Scanner; public class BubbleSort { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入共有多少个元素"); int x=scanner.nextInt(); int[] array=new int[x]; int temp; System.out.println("请输入"+x+"个元素"); for (int k=0;k<array.length;k++) { int m=scanner.nextInt(); array[k]=m; } for (int i=0;i<array.length-1;i++) { for (int j=0;j<array.length-i-1;j++) { if (array[j]>array[j+1]) { temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } } for (int n=0;n<array.length;n++) { System.out.print(array[n]+" "); } } }
.
平均时间复杂度:O(n2)
空间复杂度:O(1)
稳定性:稳定
1.优点:比较简单,空间复杂度较低,是稳定的;
2.缺点:时间复杂度太高,效率慢;
原文:https://www.cnblogs.com/coopermini/p/14532581.html