冒泡排序
算法原理
冒泡排序算法的原理如下: 1.比拟相邻的元素。如果第一个比第二个大,就替换他们两个。 2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最初一对。在这一点,最初的元素应该会是最大的数。 3.针对所有的元素反复以上的步骤,除了最初一个。 4.继续每次对越来越少的元素反复下面的步骤,直到没有任何一对数字须要比拟。
算法过程
例:对int[] arr = {10,5,9,3,6,8}进行从低到高排序:
第一轮遍历:从0-arr.Length-1,使数组中最大的数,冒泡到最高的地位。第二轮遍历:从0-arr.Length-2,使数组中次大的数,冒泡到次高的地位。顺次遍历,从到到低顺次确认地位。
算法性能
算法 | 最好工夫 | 最坏工夫 | 均匀工夫 | 额定空间 |
---|
冒泡 | O(n) | O(n2) | O(n2) | 0/1 |
Java代码
public class BubbleSorting { public static int[] BubbleSortingFunc(int[] arr) { for (int cur = arr.length - 1; cur >= 0; cur--) { for (int i = 0; i < cur; i++) { if (arr[i]>arr[i+1]) swap(arr, i,i+1); } } return arr; } //替换数组中两个元素的地位,异或运算的性质,但i不等于j public static void swap(int[] arr, int i,int j){ arr[i] = arr[i] ^ arr[j]; arr[j] = arr[i] ^ arr[j]; arr[i] = arr[i] ^ arr[j]; }}