首先我们定义一个冒泡排序接口实现其功能
接口主要有三个函数
sort 进行排序
(关于sort中循环的次数
首先外层循环的i<n-1 ,n个数字需要n-1次循环
然后内层循环,i<n-i-1,首先减去每次已经排好的大数i个,接着在减去1,防止越界)
greater 判断前一个数是否比后一个大
exch 交换前后的顺序
代码如下:
package com.test12;public class Bubble { public static void sort(Comparable[] c) { for(int i=0;i<c.length-1;i++){ for(int j=0;j<c.length-i-1;j++){ if(greater(c[j],c[j+1])){ exch(c,j,j+1); } } } } public static boolean greater(Comparable c1, Comparable c2) { return c1.compareTo(c2) > 0; } public static void exch(Comparable[] c, int i, int j) { Comparable temp; temp = c[i]; c[i] = c[j]; c[j] = temp; }}接着是我们的测试类
package com.test12;import java.util.Arrays;//冒泡排序public class TestBubble { public static void main(String[] args) { Integer[] arr={9,6,10,1,4,5}; System.out.println(Arrays.toString(arr)); Bubble.sort(arr); System.out.println(Arrays.toString(arr)); }}最终结果如下:
冒泡排序的复杂度
比较次数
(n-1)+(n-2)-(n-3)+....+2+1
交换次数
(n-1)+(n-2)-(n-3)+....+2+1
则时间复杂度为他们两个相加 最终有O(n^2)