以下是我在学习冒泡排序时用Java实现改进后的冒泡排序的代码(去除标志相关内容则为一般的冒泡排序),仅供大家参考
//冒泡排序 时间复杂度(O(n^2) 稳定的排序
public class bubbleSort {
//测试用例
public static void main(String[] args) {
int [] arr = new int[]{3,6,4,2,11,10,5};
display(arr);
sortBubble(arr);
}
//通过添加标志isSwap优化的冒泡排序()
public static void sortBubble(int [] arr){
if (arr == null || arr.length <= 0)
return;
else{
int temp;
int len = arr.length;
for (int i = 0; i < len; i++) {
//初始化标志开始
boolean isSwap;
isSwap = false;
//初始化标志结束
for (int j = 1; j < len - i ; j++) {
if (arr[j - 1] > arr[j]){
temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
//判断是否交换,如进行交换设置isSwap为true
if (!isSwap) isSwap = true;
}
}
display(arr);
//如果不进行交换则证明数组已经是排好序的了,break中止外层for循环
if (!isSwap) break;
}
}
}
//打印输出数组
private static void display(int[] arr){
for (int i = 0; i < arr.length ; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println();
}
}
如有疑问可以评论区与我讨论,互相学习。