专栏首页AVAJ冒泡排序、选择排序、插入排序

冒泡排序、选择排序、插入排序

冒泡排序:每次遍历后选出最大的元素,每当选出一个下次遍历就排除之前已选的最大元素,因为每次遍历都能定位一个最大元素。

public static void bubble(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr.length - i -1; j++) {
            // arr.length - i -1 排除选出的最大元素
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

选择排序:选出最小的元素插入到数组前面,然后在剩余的数组中继续选最小的接在之前选出最小元素后面,这样就保证有序啦。

publicstatic void select(int[] arr) {
    for(int i = 0; i < arr.length; i++) {
        // 定义一个小标作为最小的元素下标
        int min = i;
        // j = i + 1 是为了排除前面选出的最小元素
        for (int j = i + 1; j < arr.length; j ++) {
                // 看看有没有更小的
                if (arr[j] < arr[min]) {
                    min = j;
                }
        }
        // 有更小的 则替换
        if (min != i) {
            int temp = arr[i];
            arr[i] = arr[min];
            arr[min] = temp;
        }
    }
}

插入排序:每次添加一个元素与之前的元素进行比较,找到自己的位置,一直到最后一个元素。

public static void insert(int[] arr) {
    for (int i = 0 ;i < arr.length - 1; i++) {
        for (int j = i + 1; j > 0; j--) {
            // 往前比较 寻找自己的位置
            if (arr[j] < arr[j - 1]) {
                int temp = arr[j];
                arr[j] = arr[j - 1];
                arr[j - 1] = temp;
            }
        }
    }
}

总结:记住排序的特点,很快就能写出代码了。

本文分享自微信公众号 - AVAJ(gh_ccf596cb9b66),作者:AVAJ

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 剑指offer__4__二维数组中的查找

    描述:在一个二维数组中,每一行都按照从左到右的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一函数,输入这样的一个二维数组,和一个数,判断数组中是否含有该...

    用户6055494
  • 快排

    思路:快速排序每次都是定位一个元素在数组中的绝对位置,简单说就是一个元素,在排好序后他的位置是一定的(当然快排是不稳定的),你每次选定一个元素,然后定位其排好序...

    用户6055494
  • 剑指offer_11_旋转数组中的最小数字

    初看题目我们最直观的解法并不难,遍历数组用俩个"指针"一前以后,当前面"指针"指向的元素比后面的"指针"指向的数组元素小时,这时我们就找到旋转数组中的最小元素,...

    用户6055494
  • 程序员那些必须掌握的排序算法(下)

    快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割...

    wangweijun
  • 依赖数组特性的几种非比较排序算法

    前言:   前面所讲的排序算法基本都是需要进行两个数依次比较,这种两个数依次比较的算法不依赖于数组重元素的特性并且有下界Ω(nlogn)。换句话说就是使用比较排...

    SecondWorld
  • 数据结构与算法 基础排序(O(n^2))

    不能直接找到一个比minIndex小的就swap,因为交换后比较的就是minIndex和后一个元素2个元素的比较 而不是minIndex和后面所有元素比较

    g小志
  • 必学十大经典排序算法,看这篇就够了(附完整代码/动图/优质文章)

    十大排序算法可以说是每个程序员都必须得掌握的了,花了一天的时间把代码实现且整理了一下,为了方便大家学习,我把它整理成一篇文章,每种算法会有简单的算法思想描述,为...

    帅地
  • 必学十大经典排序算法,看这篇就够了(附完整代码/动图/优质文章)(修订版)

    十大排序算法可以说是每个程序员都必须得掌握的了,花了一天的时间把代码实现且整理了一下,为了方便大家学习,我把它整理成一篇文章,每种算法会有简单的算法思想描述,为...

    帅地
  • Data Structure_Sort Algorithm

    生成随机的n个数量的数组,输出数组每一个元素的内容。测试排序算法使用的标准就是运行时间和排序的正确性,所以需要一个验证正确性和计算排序时间的:

    西红柿炒鸡蛋
  • Sort Algorithm

    生成随机的n个数量的数组,输出数组每一个元素的内容。测试排序算法使用的标准就是运行时间和排序的正确性,所以需要一个验证正确性和计算排序时间的:

    西红柿炒鸡蛋

扫码关注云+社区

领取腾讯云代金券