zoukankan      html  css  js  c++  java
  • 【Algorithm】选择排序法

    简单的选择排序法思想:

    * 首先找到数组中最小的元素,将它和数组第一个元素互换位置(如果第一个元素就是最小那么它就和自己交换)。
    * 其次,在剩下的元素中找到最小的元素,将它与数组的第二个元素互换位置。如此往复。
    * 即,它不断地选择剩余元素中的最小者。

    Java 示例代码如下:

    public class Selection {
    
        public static void main(String[] args) {
            int[] a = {11, 32, 49, 6, 91, 2, 15, 70, 19, 8};
            System.out.println("排序之前:");
            for (int i=0; i<a.length; i++) { //a.length = 10
                System.out.print(a[i] + " ");
            }
            
            // 简单的选择排序
            for (int i=0; i<a.length; i++) {
                int min = a[i]; //最小值
                int n = i; //最小值的索引
                for (int j=i+1; j<a.length; j++) {
                    if (a[j] < min) { //找出最小的数
                        min = a[j];
                        n = j;
                    }
                }
                a[n] = a[i];
                a[i] = min;
            }
            
            System.out.println();
            System.out.println("排序之后:");
            for (int i=0; i<a.length; i++) {
                System.out.print(a[i] + " ");
            }
        }
        
    }

    选择排序法特点:

    1. 运行时间和输入无关。

      为了找出最小的元素而扫描一遍数组并不能为下一次扫描提供什么信息(在某种情况下是缺点)。

      【PS: 一个已经有序的数组和一个元素随机排列的数组所用的排序时间一样长!】

    2. 数据移动是最少的。

      用了 N 次交换。

    参考:

    《算法》

    各种排序算法的分析及java实现

    此外,还有一个小动画解释的很生动,推荐下:

    http://visualgo.net/sorting.html

  • 相关阅读:
    spring jdk动态代理
    java分页对象封装
    jQuery---ajxa
    创建ajax对象
    EL基础语法
    jsp语法
    servlet cookie session
    java 单例模式
    yapi 强大的api管理系统
    Orange--一个基于OpenResty / Nginx的HTTP API Gateway
  • 原文地址:https://www.cnblogs.com/jaxer/p/5326810.html
Copyright © 2011-2022 走看看