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

       // 选择排序
            // 核心思路:
            //    从第一个单元开始
            //    默认当前单元是最小值
            //    存储当前单元的索引下标
            //    通过索引下标,获取数据,跟之后的每一个单元的数据进行比较
            //    如果之后的单元存储的数据是较小值,那么就存储这个单元的索引下标
            //    循环一次之后,变量中存储的是当前参与循环的所有单元,存储最小值的索引下标
            //    如果这个索引下标,不是,原始的索引下标,就执行交换存储数据的操作
            //    完成上述操作,会比较出一个最小值在起始位置
            //    多次循环完成整个数组的排序

            // 存储索引,通过索引调用数据,比较数据,存储索引,最终判断索引,交换数据

            // 优化点 : 
            //    1, 如果数组有 n 个单元需要 比较排序,外层循环只要执行n-1次就可以
            //    2, 如果当前循环是从 i 索引开始 实际比较 从 i+1 开始和 i 比较

            // 每次选择一个最小值,存储在数组的起始位置


            var arr = [876,231,4,3,1765,7658,3,3213,2,1323];

            for(var i = 0 ; i <= arr.length-1-1 ; i++){
                // 定义一个变量,存储每次参与循环,起始单元的索引下标
                // 第一次,没有比较出任何最小值,从第一个单元也就是索引 0 开始循环 , 默认索引0位置存储的是最小值
                // 第二次,已经比较出第一个最小值,存储在索引0位置,循环是从索引1开始,默认索引1位置存储的是最小值
                // 第三次,已经比较出两个最小值,存储在索引0,1位置,循环是从索引2开始,默认索引2位置存储的是最小值
                var min = i;

                // 从当前循环起始单元的下一个位置,开始循环,也就是 i+1
                // 循环至最后一个单元
                for(var j = i+1 ; j <= arr.length-1 ; j++){
                    // 如果 变量中存储的索引,获取的数据
                    // 比 当前 循环到索引 存储的数据大
                    // 变量 存储 当前 位置的索引下标
                    if(arr[min] > arr[j]){
                        min = j;
                    }
                }


                // 内层循环结束,变量中存储本次参与循环的所有单元中,最小值所在的索引下标
                // 变量中存储的索引下标,如果不是 起始的索引下标
                // 交换两个索引下标 min变量中存储的索引下标 和 起始的索引下标 i 对应的数据数值
                if(min != i){
                    var num = arr[min];
                    arr[min] = arr[i];
                    arr[i] = num;
                }
            }
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    2D Polygons( Poygon) CGAL 4.13 -User Manual
    2D Convex Hulls and Extreme Points( Convex Hull Algorithms) CGAL 4.13 -User Manual
    Linear and Quadratic Programming Solver ( Arithmetic and Algebra) CGAL 4.13 -User Manual
    3D Spherical Geometry Kernel( Geometry Kernels) CGAL 4.13 -User Manual
    2D Circular Geometry Kernel ( Geometry Kernels) CGAL 4.13 -User Manual
    MySQL开启日志跟踪
    Cookie&Session
    Web服务器——WSGI
    win10上安装redis
    Ubantu上安装Redis
  • 原文地址:https://www.cnblogs.com/ht955/p/14040049.html
Copyright © 2011-2022 走看看