快排

作者: 大盗海洲 | 来源:发表于2019-07-20 01:09 被阅读0次
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());
    }

相关文章

  • 快排

    快排代码

  • 快排

  • 快排

    昨天晚上睡觉前兴起准备十分钟写出快排,结果纠结了两个小时愣是没有搞出来,很郁闷地睡觉去。今天地铁上跟LG又重新缕了...

  • 快排

    基本思想: 先从数列中取出一个数作为基准数。 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的...

  • 快排

  • 快排

    python实现 java实现:

  • 快排

    快速排序: 基本思想:1、先从数列中取出一个数作为基数。2、分区,将比此基数大的数放到它右边,小的数放到它左边。3...

  • 快排

    package sort;import java.util.Arrays;public class Quickso...

  • 快排

  • 快排

    一、(1)假如有一个数组 [8,10,2,3,6,1,5] ,我们拿出5作为参考,将小于5的数放到它的左边,大于5...

网友评论

      本文标题:快排

      本文链接:https://www.haomeiwen.com/subject/mcqslctx.html