• 冒泡+选择排序


    冒泡排序老算法了,这次系统学习排序算法重温一遍,再加上flag优化一下。时间复杂度O(n2)

    void bubbleSort(int[] nums) {
            for (int i = 0; i < nums.length - 1; i++) {
                boolean flag = false;
                for (int j = nums.length - 1; j > i; j--)
                    if (nums[j] < nums[j - 1]) {
                        nums[j] ^= nums[j - 1];
                        nums[j - 1] ^= nums[j];
                        nums[j] ^= nums[j - 1];
                        flag = true;
                    }
                if (flag == false)
                    break;
            }
        }

    选择排序感觉与冒泡类似,时间复杂度同为O(n2)

    void selectSort(int[] nums){
            for (int i = 0; i < nums.length - 1; i++) {
                int index = i;
                for (int j = i + 1; j < nums.length; j++) {
                    if (nums[j] < nums[index]) {
                        index = j;
                    }
                }
                if (index != i) {
                    int tmp = nums[i];
                    nums[i] = nums[index];
                    nums[index] = tmp;
                }
            }
        }

    冒泡排序一般是稳定的,相邻的等值元素(包括经过一系列交换后相邻)不会颠倒顺序。

    选择排序不稳定,当局部数组首元素与最小值交换时,首元素与数组中等值元素的先后顺序可能颠倒。

     参考原文

  • 相关阅读:
    Build a pile of Cubes
    一键升级所有pip过期库
    AWGN
    调制详解——待完善
    BASK、BFSK、BPSK调制方法的Matlab程序实现
    tomcat运行问题解决方法
    ehcache简单使用
    MySQL 数据库中用户表中口令登陆设置
    和自己赛跑的人
    中文词频统计
  • 原文地址:https://www.cnblogs.com/faded828x/p/13205668.html
Copyright © 2020-2023  润新知