冒泡排序的优化

简介: 冒泡排序的优化

冒泡排序的优化


这下面就是我自己的理解冒泡排序的小优化吧

package cn.itcast.algorithm.suanFa;
import java.util.Arrays;
/**
 * 冒泡排序的优化
 */
public class MainS12 {
    public static void main(String[] args) {
        int[] a = {3, 1, 5, 4, 6, 9, 8, 7, 2};
//        int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        int n = a.length-1;
        while(true) {
            int last = 0;   //表示最后一次交换索引位置
            boolean swapped = false;   //判断是否发生交换
            //a.length - 1 - j减少不必要的比较次数
            for (int i = 0; i < n; i++) {
                System.out.println("比较了"+ (i+1)+ "次");
                if (a[i] > a[i + 1]) {
                    int temp = a[i];
                    a[i] = a[i+1];
                    a[i+1] = temp;
                    swapped = true;
                    last = i;
                }
            }
            n = last;
            /*
            如果最后一次的索引位置为0则说明要交换的次数为0,
            证明已经排序好了,不需要在进行比较了,退出该循环
             */
            if (n == 0){
                break;
            }
            System.out.println("-------------------");
            //这里是考虑到如果原本就是有序的,即没有发生交换,就不用在进行不必要的比较了
            if (!swapped){
                break;
            }
        }
        System.out.println("冒泡排序之后:" + Arrays.toString(a));
    }
}
目录
打赏
0
0
0
0
0
分享
相关文章
|
10月前
|
计数排序及优化
计数排序及优化
110 1
手撕排序算法3:优化版冒泡排序和快速排序的三种方法(包括三数取中,小区间优化,递归版本)(上)
手撕排序算法3:优化版冒泡排序和快速排序的三种方法(包括三数取中,小区间优化,递归版本)(上)
手撕排序算法3:优化版冒泡排序和快速排序的三种方法(包括三数取中,小区间优化,递归版本)(上)
手撕排序算法3:优化版冒泡排序和快速排序的三种方法(包括三数取中,小区间优化,递归版本)(下)
手撕排序算法3:优化版冒泡排序和快速排序的三种方法(包括三数取中,小区间优化,递归版本)(下)
冒泡排序 - 【利用冒泡排序模拟实现快速排序的功能】
冒泡排序 - 【利用冒泡排序模拟实现快速排序的功能】
如何优化快速排序?
如何优化快速排序?
35859 0
如何优化快速排序?
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等