快排

image.png
image.png
image.png

荷兰国旗排序图示

image.png

荷兰国旗排序code

image.png
  int arr[] = {9, 8, 5, 7, 4, 9, 7, 5, 9, 8, 4, 2, 6, 5, 9, 1, 7, 5, 9,88,11};
    @Test
    public void quickSortTest(){
        quickSort(arr,0,arr.length-1);
        printArr();
    }
    public void quickSort(int[] arr, int l, int r) {
        if (l < r) {
            int[] p = partition(arr, l, r);
            quickSort(arr, l, p[0] - 1);
            quickSort(arr, p[1] + 1, r);
        }

    }
    private int[] partition(int[] arr, int l, int r) {
        int less = l - 1;
        int more = r ;
        while (l < more) {
            if (arr[l] < arr[r]) {//左边
                swap(++less, l++);
            } else if (arr[l] > arr[r]) {
                swap(--more, l);
            } else {
                l++;
            }
        }
        swap(more,r);
        int[] ints = {less + 1, more};//return index
        return ints;

    }

[图片上传失败...(image-cf73bb-1563555823413)]

    @Test
    public void test8() {
        String str = "aaafvjvnrjoooobbggggcc";
        boolean tag = false;
        char[] chars = str.toCharArray();
        StringBuilder sb = new StringBuilder();
        int len = chars.length - 1;
        for (int i = 0; i < len; i++) {
            if (i + 1 <= len && chars[i] == chars[i + 1]) {
                if (!tag) {
                    sb.append(chars[i]).append(chars[i + 1]);
                    tag = true;
                } else {
                    sb.append(chars[i]);
                }

            } else {
                if (tag && i < len - 1) {
                    sb.append(",");
                }
                tag = false;
            }
        }
        System.out.println("sb:--> " + sb.toString());
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 在快速排序中,一个比较核心的操作是partition,就是选中一个元素作为枢轴pivot,然后执行parti...
    topshi阅读 1,251评论 0 1
  • 荷兰国旗问题 现有红白蓝三个不同颜色的小球,乱序排列在一起,请重新排列这些小球,使得红白蓝三色的同颜色的球在一起。...
    dlihasa阅读 1,161评论 0 9
  • 1,经典快排 经典快排就是将序列中比尾元素小的移动到序列左边,比尾元素大的移动到序列右边,对以该元素为界的左右两个...
    霍运浩阅读 364评论 0 0
  • 早上,阅览新闻时才得知:今天是“世界读书日”!我想,在这个特别的日子里总要写点什么才不辜负一直以来的坚持和喜爱,因...
    似水流年1982阅读 340评论 0 4
  • 痴人说梦,博得红颜笑, 江郎才尽,苦于伊人诗。 远方山水,窗外云雨,何能达益, 杯中苦酒,清风拂来,怎解心中淡淡愁...
    风中的白杨阅读 212评论 0 0

友情链接更多精彩内容