本文共 1494 字,大约阅读时间需要 4 分钟。
学习开发一年的时间里,很少去了解排序算法,冒泡排序也是最开始学习的样子,靠死记硬背,没有引入自己的理解。
对于什么时间复杂度和空间复杂度和稳定性也不清楚其原委,或许在代码方面少了几许的天分:
冒泡排序:
冒泡排序每一轮的比较都是前面的数和后面的数进行比较,并交换位置,每一轮结束,最大值就位于序列末尾。
下面代码是最初的冒泡排序代码:
public class bubbleSort { public static void sort(int[] arr) { for(int i=0;iarr[j+1]) { int num = arr[j]; arr[j]=arr[j+1]; arr[j+1]=num; } } } } public static void main(String[] args) { int[] arr = {20,40,30,10,60,50}; sort(arr); for(int i=0;i
代码如下:
public class bubbleSort { public static void main(String[] args) { int[] arr = {49,38,65,97,76,27,49}; bubbleSort(arr); for(int i = 0;i < arr.length;i++){ System.out.println(arr[i]); } } public static void bubbleSort(int[] arr){ boolean flag;// for(int i = arr.length-1; i > 0; i--){ flag = false; for(int j = 0; j < i; j++){ if(arr[j] > arr[j+1]){ swap(arr,j,j+1); flag = true; } } if(!flag){ return; } } } public static void swap(int[] arr,int m,int n){ int num = arr[m]; arr[m] = arr[n]; arr[n] = num; }}
冒泡排序是稳定的,因为当a = b时,只有大于才进行位置的交换,故 a 和 b 的位置没有计划进行交换,所以算法稳定。
转载地址:http://pcfoi.baihongyu.com/