冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
冒泡排序的时间复杂度
(一)最优时间复杂度:O(n)(表示遍历一次发现没有任何可以交换的元素,排序结束)
(二)最坏时间复杂度:O(n^2)
(三)稳定性:稳定
所谓的冒泡排序就先前一个和后一个进行比较,如果前一个比后一个小或者前一个比后一个大 就他们交换位置。
例如: int[ ] a = {5,3,1,7} 这个数组,我们要他升序排列。我们可以拿5 跟 3 比较 ,我们就让5 和 3 交换位置。依次比下去,如果满足条件我们就让他们交换位置,不满足则继续向下比较。
7个元素要进行比较6次。
6个元素要进行比较5次。
5个元素要进行比较4次。
所以我们可以得出结论 比较次数等于数组的长度-1。
每次都要有就 j < i 比较
代码如下
public class Sort{ int arr[]; public void sort() { for (int i = arr.length-1; i >0 ; i--) { //比较次数等于数组的长度-1 所以我们比较length-1就行 for (int j = 0; j < i ; j++) { if (arr[j] > arr[j+1]) { //判断前一个是否比后一个大 int temp = arr[j]; //定义中间变量交换两个数 arr[j] =arr[j+1]; arr[j+1] = temp; } } } } public void traversing() {// 遍历数组 for (int i = 0; i <arr.length ; i++) { System.out.print(arr[i] + " "); } } public Sort(int [] arr) { this.arr = arr; } } class Main_{ public static void main(String[] args) { int arr[] = {1,0,98,4}; Sort sort = new Sort(arr); sort.sort(); sort.traversing(); } }
运行结果:
0 1 4 98
当然在Java中我们并不需要写这么复杂的算法,sun公司已经写好封住成了方法,我们用的时候直接调用就行。
Arrays.sort();方法就可实现排序 ,括号中填一个数组就行。这个方法在 java.util.Arrays 下。
如果本篇文章对你有用的话 ,点个关注吧。
原文:https://www.cnblogs.com/592L/p/12565499.html