排序算法(冒泡,快排,插入)
本文最后更新于 1062 天前,其中的信息可能已经有所发展或是发生改变。

冒泡排序

img

@Test
public void test() {
    int[] arr = new int[]{3, 4, 1, 76, 3, 889, 8, 4};
    for (int i = 0; i < arr.length - 1; i++) {
        for (int j = arr.length - 2; j >= i; j--) {
            if (arr[j + 1] < arr[j]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
    System.out.println(ArrayUtils.toString(arr));
}

插入排序

img

@Test
public void test() {
    int[] arr = new int[]{3, 4, 1, 76, 3, 889, 8, 4};
    for (int i = 1; i < arr.length; i++) {
        int x = arr[i];
        int j = i - 1;
        for (; j >= 0; j--) {
            if (x >= arr[j]) {
                break;
            }
            // 插入的x比当前位置的值小,当前值就往后挪一个位置,给以后插入x腾位置
            arr[j + 1] = arr[j];
        }
        // 插入的x比当前位置的值大,就将x插入到当前位置的后面
        arr[j + 1] = x;
    }
    System.out.println(ArrayUtils.toString(arr));
}

快速排序

img

@Test
public void test() {
    int[] arr = new int[]{3, 4, 1, 76, 3, 889, 8, 4};
    sort(arr, 0, arr.length - 1);
    System.out.println(ArrayUtils.toString(arr));
}

private void sort(int[] arr, int left, int right) {
    if (right - left < 1) {
        return;
    }
    int leftOld = left;
    int rightOld = right;
    // 取左边的值为中间值
    int midValue = arr[left];
    // right指针移动
    boolean highFlag = true;
    while (left != right) {
        if (highFlag) {
            if (arr[right] < midValue) {
                // 比中间值小,将值放到左指针那里
                arr[left] = arr[right];
                // left指针移动
                highFlag = false;
                // left指针刚给值了,就从下一个开始
                left++;
            } else {
                // 比中间值大,继续移动right指针
                right--;
            }
        } else {
            if (arr[left] > midValue) {
                arr[right] = arr[left];
                highFlag = true;
                right--;
            } else {
                left++;
            }
        }
    }
    // left指针为中间位置,给中间位置赋值之前取得中间值
    arr[left] = midValue;
    // 分治
    sort(arr, leftOld, left - 1);
    sort(arr, left + 1, rightOld);
}
作者:Yuyy
博客:https://yuyy.info

评论

  1. w。
    Windows Chrome
    3年前
    2021-6-03 15:10:04

    杨哥真狠,520就搞这个

    • Yuyy
      w。
      Windows Chrome
      3年前
      2021-6-03 15:14:30

      哈哈哈,爱情只会拖慢我写代码的速度

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇