类名 | Bubble |
---|---|
构造方法 | Bubble(): 创建Bubble对象 |
成员方法 | public static void sort(Comparable[] a); 对数组内的元素进行排序 private static boolean greater(Comparable v, Comparable w);判断大小 private static void exch(Comparable[] a, int i, int j) 交换数组a中索引为i和j处的值 |
package a_sort.a_bubble;
/**
* 本类为冒泡排序
*/
public class Bubble {
/**
* 对数组a中的元素进行排序
*
* @param a 需要排序的数组
*/
public static void sort(Comparable[] a) {
for (int i = a.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
//比较索引j和j+1处的值
if(greater(a[j], a[j+1])){
exch(a, j, j+1);
}
}
}
}
/**
* 判断元素v是否大于元素w
*
* @param v 元素v
* @param w 元素w
* @return v大于w则返回true, 否则为false
*/
private static boolean greater(Comparable v, Comparable w) {
return v.compareTo(w) > 0;
}
/**
* 元素交换
*
* @param a 数组
* @param i 数组中的元素索引
* @param j 数组中的元素索引
*/
private static void exch(Comparable[] a, int i, int j) {
Comparable temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
package a_sort.a_bubble;
import java.util.Arrays;
/**
* 冒泡排序测试类
*/
public class BubbleTest {
public static void main(String[] args) {
Integer[] arr = {4, 5, 6, 3, 2, 1};
Bubble.sort(arr);
System.out.println(Arrays.toString(arr));
}
}
根据大O推导法则, 冒泡排序时间复杂度为O(N^2), 复杂度比较高, 不适合大量数据排序.
原文:https://www.cnblogs.com/coder-Joe/p/13687691.html