算法学习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>

结果:

算法学习1-插入排序

改进了下,发觉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>