美文网首页
冒泡排序和选择排序

冒泡排序和选择排序

作者: ZuYuan | 来源:发表于2019-06-27 15:31 被阅读0次
    • 归属:蛮力法

    • 算法复杂度:O(n^2)

    • 稳定性:

      • 冒泡排序:稳定
      • 选择排序:不稳定
    • 思想:

      冒泡排序:遍历数组,当前下标的数大于后一个下标的数,则将两个下标的数交换,实现每一次遍历数组都移动一个最大元素到数组尾部(尾部排好序了则不再参加排序)。
      选择排序:遍历数组,每次遍历记录最小的元素,第一次跟index=0交换,第二次跟index=1交换,以此类推,实现排序。

    • 代码:

    
        /**
         * 冒泡排序
         */
        public static void bubbleSort(int[] nums) {
            for(int i = 0; i < nums.length - 1; i++) {
                //数组尾部已经排好序
                for (int j = 0; j < nums.length - 1 - i; j++) {
                    if (nums[j + 1] < nums[j]) {
                        int aNum = nums[j];
                        nums[j] = nums[j + 1];
                        nums[j + 1] = aNum;
                    }
                }
            }
        }
    
        /**
         * 选择排序
         */
        public static void selectionSort(int[] nums) {
            for(int i = 0; i < nums.length - 1; i++) {
                int minIndex = i;
                for (int j = i + 1; j < nums.length; j++) {
                    if (nums[j] < nums[minIndex]) minIndex = j;
                }
                if (minIndex != i) {
                    int aNum = nums[minIndex];
                    nums[minIndex] = nums[i];
                    nums[i] = aNum;
                }
            }
        }
    

    相关文章

      网友评论

          本文标题:冒泡排序和选择排序

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