zoukankan      html  css  js  c++  java
  • 选择排序

    一种简单直观的排序算法;首先在未排序的序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾;以此类推,知道所有元素排序完毕

       

    假设有一个无序序列 L0L1L2Ln-1

    • 初始无序序列 L0L1L2Ln-1,有序序列为空
    • i 趟排序,有序区为 L0Li-2,无序区为 Li-1Ln-1,该趟排序从无序区中选出最小的元素 Lm,将它与无序区的第 1 个元素 Li-1 交换
    • 重复 2 步骤,n 趟结束后,序列有序

      

    import java.util.Arrays;
    
    /**
     * @date 2020/8/20 11:04
     */
    public class TestSort {
    
        public static void main(String[] args) {
            int[] arr = {8, 2, 4, 12, 4, 10, 3, 11, 1};
            System.out.println(Arrays.toString(arr));
            int[] sort = bubbleSort(arr);
            System.out.println(Arrays.toString(sort));
        }
    
        private static int[] selectSort(int[] arr){
            for (int i = 0; i < arr.length; i++) {
                // 保存最小元素的索引
                int min = i;
                for (int j = i + 1; j < arr.length; j++) {
                    // 比较进行交换索引
                    if (arr[min] > arr[j]){
                        min = j;
                    }
                }
                // 一次循环结束,找到最小元素,交换元素
                int temp = arr[i];
                arr[i] = arr[min];
                arr[min] = temp;
            }
            return arr;
        }
    }

       

  • 相关阅读:
    Block详解二(底层分析)
    Block详解一(底层分析)
    Swift 属性与汇编分析inout本质
    Swift --闭包表达式与闭包(汇编分析)
    Swift--struct与class的区别(汇编角度底层分析)
    Swift 枚举-从汇编角度看枚举内存结构
    Swift -POP( 面向协议编程)与OOP(面向对象编程)
    从零开始的计算机网络基础(图文并茂,1.8w字,面试复习必备)
    浅谈js数据类型
    js数组冷知识
  • 原文地址:https://www.cnblogs.com/sebastian-tyd/p/13580192.html
Copyright © 2011-2022 走看看