zoukankan      html  css  js  c++  java
  • 算法学习1-插入排序

    学习算法,简单做了个小练习,插入算法:

     1 <script type="text/javascript">
     2 var n=100;
     3 var array=new Array(n);
     4 //用A来进行排序
     5 var A=new Array();
     6 //生成100个随机数的数组
     7 for(var i=0;i<array.length;i++)
     8 {
     9     array[i]=Math.floor(Math.random()*n);    
    10     document.writeln(array[i]);
    11 }
    12 //插入算法函数
    13 function insertSort()
    14 {    
    15     A[0]=array[0];
    16     var j=1;
    17     var i=0;
    18     for (j;j<array.length ;j++ )
    19     {
    20         //从第二个数开始把已经有的数组中的数据赋值给A,然后排序
    21         A[j]=array[j];
    22         var key=array[j];
    23         i=j-1;
    24         //当前数据比已经排好序的数据最末尾要小时,则要插入。使用循环,直到把这个数插入到比它大的第一个数前面
    25         //相当于对当前数据和已经排好序的做一次冒泡排序,小的冒到前面去
    26         while(A[i+1]<A[i]&&i>=0)
    27         {
    28             //执行插入语句
    29             A[i+1]=A[i];
    30             A[i]=key;
    31             i=i-1;
    32         }        
    33     }    
    34 }
    35 document.writeln("<br/>-----------after sort---------<br/>");
    36 insertSort();
    37 for(var j=0;j<A.length;j++)
    38     {
    39         document.writeln(A[j]);
    40     }
    41 </script>

    结果:

    改进了下,发觉while中赋值可以在把所有大的数据移动往后后再插入

     1 <script type="text/javascript">
     2 var n=100;
     3 var array=new Array(n);
     4 //用A来进行排序
     5 var A=new Array();
     6 //生成100个随机数的数组
     7 for(var i=0;i<array.length;i++)
     8 {
     9     array[i]=Math.floor(Math.random()*n);    
    10     document.writeln(array[i]);
    11 }
    12 //插入算法函数
    13 function insertSort()
    14 {    
    15     A[0]=array[0];
    16     var j=1;
    17     var i=0;
    18     for (j;j<array.length ;j++ )
    19     {
    20         //从第二个数开始把已经有的数组中的数据赋值给A,然后排序
    21         A[j]=array[j];
    22         var key=array[j];
    23         i=j-1;
    24         //当前数据比已经排好序的数据最末尾要小时,则要插入。使用循环,直到把这个数插入到比它大的第一个数前面
    25         //相当于对当前数据和已经排好序的做一次冒泡排序,小的冒到前面去
    26         while(key<A[i]&&i>=0)
    27         {
    28             //执行插入语句
    29             A[i+1]=A[i];             
    30             i=i-1;
    31         }        
    32         A[i+1]=key;
    33        
    34     }    
    35 }
    36 document.writeln("<br/>-----------after sort---------<br/>");
    37 insertSort();
    38 for(var j=0;j<A.length;j++)
    39     {
    40         document.writeln(A[j]);
    41     }
    42 </script>
  • 相关阅读:
    BlockingQueue(阻塞队列)详解
    异步远程调用线程池队列
    JVM中的五大内存区域划分详解及快速扫盲
    http链接管理器
    influxDB 增加
    ArcGIS的sde数据库连接
    arcgis server注册文件夹
    arcmap编辑oracle数据库
    create database connection
    发布gp服务失败
  • 原文地址:https://www.cnblogs.com/luckyflower/p/3778204.html
Copyright © 2011-2022 走看看