前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >排序算法(冒泡,快排,插入)

排序算法(冒泡,快排,插入)

作者头像
Yuyy
发布2022-09-21 09:56:32
2160
发布2022-09-21 09:56:32
举报
文章被收录于专栏:yuyy.info技术专栏

本文最后更新于 404 天前,其中的信息可能已经有所发展或是发生改变。

冒泡排序

代码语言:javascript
复制
@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));
}

插入排序

代码语言:javascript
复制
@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));
}

快速排序

代码语言:javascript
复制
@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);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-5-20 9,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 冒泡排序
  • 插入排序
  • 快速排序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档