zoukankan      html  css  js  c++  java
  • 冒泡排序和选择排序(九)

    冒泡排序是我学的第一个排序。刚学的时候也没有整明白,但是记住了答案。找工作笔试的时候凭借着记忆力完成了操作。工作了这么久,突然回头看。发现以前觉得很难的东西现在都已经整的差不多了。希望能和你们一起分享自己的进步。

    冒泡排序原理:比较二个数的大小,通过交换,大的放后面。

    冒泡第一轮会找到该数组中最大的元素。

    用马赛克图来说明以下。 假设一个随机的数组。

     通过一轮冒泡找到了数组中最大的元素8,放在最后面。

     第二轮 排除第一轮中已经找到的最大元素,找到数组中其次大的元素放在倒数第二。

           

    找到最大元素7,放在最后面。

    后面的以此类推,直到排好顺序。

    代码

    public class BubbleSort {
    
        public static void main(String[] args) {
            int arr[] = { 2, 2, 5, 7, 1, 3, 9, 7 };
            printSort(arr);
            bulleSort(arr);
            printSort(arr);
        }
    
        public static void bulleSort(int arr[]) {
            // 排序轮次 n-1次 第一个不需要排序
            for (int i = 0; i < arr.length - 1; i++) {
                // 已经排好的不需要比较所以是-i
                for (int j = 0; j < arr.length - 1 - i; j++) {
                    if (arr[j] > arr[j + 1]) {
                        // 交互位置
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
        }
    
        public static void printSort(int arr[]) {
            System.out.println(Arrays.toString(arr) + " ");
        }
    
    }

    选择排序

    选择排序思想:找到每一轮中最小的元素,放在已经排好的元素后面。

    第一轮,找到元素最小的下标,和最开始的元素交换位置。

    第二轮,找到除了第一个元素之外的其他元素中最小的元素,第二个元素交换位置。

    通过二轮排序,找到了二个最小的元素。

    接着直到排好顺序。

    代码如下:

    //选择排序
    public class SelectSort {
        public static void main(String[] args) {
            int arr[] = { 3, 1, 2, 7, 5, 9, 4 };
            PrintSort.printSort(arr);
            selectSort(arr);
            PrintSort.printSort(arr);
        }
    
        private static void selectSort(int[] arr) {
    
            // 循环n-1次
            for (int i = 0; i < arr.length - 1; i++) {
                // 记录最小位置 默认自己
                int index = i;
                for (int j = i + 1; j < arr.length; j++) {
                    if (arr[index] > arr[j]) {
                        // 找到最小的 复制其位置 并把他赋值给temp
                        index = j;
                    }
                }
                // 最小值不是本身
                if (index != i) {
                    int temp = arr[i];
                    arr[i] = arr[index];
                    arr[index] = temp;
                }
    
            }
        }
    }

     

  • 相关阅读:
    78. Subsets
    93. Restore IP Addresses
    71. Simplify Path
    82. Remove Duplicates from Sorted List II
    95. Unique Binary Search Trees II
    96. Unique Binary Search Trees
    312. Burst Balloons
    程序员社交平台
    APP Store开发指南
    iOS框架搭建(MVC,自定义TabBar)--微博搭建为例
  • 原文地址:https://www.cnblogs.com/laolei11/p/10643670.html
Copyright © 2011-2022 走看看