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

    <pre>

    <script type="text/javascript">

    //选择排序法从小到大排序

    /*算法原理:

            把一组元素中最小的一个调到第一个位置,然后问题规模缩小一个。

    继续在剩下的N-1个元素中选择最小的放到第一位(也就是整体的第二位)。

    重复以上步骤N-1次完成排序

       

    假设有数组: [7,6,9,5,3]; 对于N个元素数组需要进行 N-1次比较

    第一轮

    用索引号为0的与余下N-1个比较。

    用索引为0的7和索引为1的6比较后交换位置

    [6,7,9,5,3];

    用索引为0的6与索引为2的9比较不动

    用索引为0的6与索引为3的5比较交换位置

    [5,7,9,6,3];

    用索引为0的元素与索引为4的3进行比较交换位置

    [3,7,9,6,5];

    第一轮全部比较交换完毕,结果就是选择出了最小的一个在最前面。

       

    第二轮

    从索引为1的与索引为2的开始比较因为第一轮已经确定了索引为0的为最小的

    第一轮结果为:[3,7,9,6,5];下面开始第二轮

    用索引为1的与索引为2的比较不动

    [3,7,9,6,5]

    用索引为1的与索引为3的比较结果交换

    [3,6,9,7,5]

    用索引为1的与索引为4的比较结果交换

    [3,5,9,7,6]

    第二轮比较完毕后,前两个确定下来进入第三轮

       

    第三轮

    从索引为2的与索引为3的比较,结果交换

    [3,5,7,9,6]

    从索引为2的与索引为4的比较结果交换

    [5,3,6,9,7];

            第三轮比较后确定了前三个。

       

    第四轮:

    从索引为3的与索引为4的比较结果交换

    [3,5,6,7,9];

    比较完毕交换结束,排序完成。

    */

    //选择排序法代码实现:

    var arr = [7,6,9,5,3];

    for(var i=0;i<arr.length-1;i++){        

    var n =i;

    document.writeln("------第 "+(i+1)+" 轮---------");         

            for(var j=i+1;j<arr.length;j++){

    if(arr[n]>arr[j]){

    n=j;                                //把最小的那个元素的索引保存到n上        

    }        

    }

    //如果n没有发生变化说明最原始的那个就是最小的

    if(n!=i){

    t = arr[i];

    arr[i]=arr[n];

    arr[n]=t;

    }

    document.writeln(arr);         

    }

    </script>

  • 相关阅读:
    Tomcat 配置和springframework MVC配置简介
    Java监控工具、调优、调试辅助函数
    发布一个 Linux 下的 C++ 多线程库
    《程序中的日期与时间》第一章 日期计算
    《多线程服务器的适用场合》例释与答疑
    Muduo 网络编程示例之零:前言
    muduo 与 boost asio 吞吐量对比
    Muduo 网络编程示例之二:Boost.Asio 的聊天服务器
    计算机图书赠送
    muduo 与 libevent2 吞吐量对比
  • 原文地址:https://www.cnblogs.com/lison-note/p/7476859.html
Copyright © 2011-2022 走看看