一种改进的冒泡排序(抖动排序、双边冒泡排序)

本文为原创文章,转载请注明出处,谢谢你……

喜欢java并发编程的请加群:736156823
开始-->
冒泡排序(抖动排序、双边冒泡排序)
代码如下:

    // 有效的数组下标
    public void shardingBubble(int a[], int left, int right) {
        if (null == a) {
            return;
        } else if (left < 0 || right < 0) {
            return;
        } else if (a.length <= 0) {
            return;
        } else if (right - left <= 0) {
            return;
        } else {
            int lf = left;
            int rf = right;
            out:
            for (int i = 0; i <= right; i++) {
                // 从右边开始,也就是小的上浮
                if ((i % 2) == 0) {
                    boolean swap = false;
                    for (int j = rf; j > lf; j--) {
                        if (a[j] < a[j - 1]) {
                            swap(a, j - 1, j);
                            swap = true;
                        }
                    }
                    lf = lf + 1;
                    if (!swap) {
                        break out;
                    }
                } else {
                    // 从左边开始,也就是大的下沉
                    boolean swap = false;
                    for (int k = lf; k < rf; k++) {
                        if (a[k] > a[k + 1]) {
                            swap(a, k, k + 1);
                            swap = true;
                        }
                    }
                    rf = rf - 1;
                    if (!swap) {
                        break out;
                    }
                }
                if (lf >= rf) {
                    break out;
                }
            }
        }
    }

喜欢java并发编程的请加群:736156823

有问题欢迎指正,这是新鲜出炉的
代码未全面测试,留给你吧,哈哈……
结束-->
本文为原创文章,转载请注明出处,谢谢你……

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容