JavaScript

超轻量级php框架startmvc

基于JavaScript实现的插入排序算法分析

更新时间:2020-05-06 07:30:01 作者:startmvc
本文实例讲述了基于JavaScript实现的插入排序算法。分享给大家供大家参考,具体如下:根

本文实例讲述了基于JavaScript实现的插入排序算法。分享给大家供大家参考,具体如下:

根据排序过程中使用的存储器不同,可以将排序方法分为两大类:内部排序外部排序

内部排序是指待排序记录存放在计算机随机存储器中进行的排序过程外部排序指的是待排序的记录数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程

下面介绍几种常见的内部排序方式:

插入排序

插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入已排好序的有序表中,从而得到一个新的、记录数加1的有序表。

插入排序有两个循环,外循环将数组元素挨个移动,而内循环则对外循环中选定的元素及它后面的那个元素比较。如果外循环中选中元素小,那么数组元素会向右移动,为内循环中的这个元素腾出位置。

下面我们通过js实现直接插入排序过程:


<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title>JavaScript插入排序</title>
 </head>
 <body>
<script type="text/javascript">
 function insertSort(nums){//插入排序
 var temp,
 inner;
 for(var outer=1;outer<nums.length;outer++){//外循环选中元素
 temp=nums[outer];//选中元素
 inner=outer;
 while(inner>0&&(nums[inner-1]>=temp)){//内循环与选中元素对比
 nums[inner]=nums[inner-1];//如果选中元素前面的元素大,则前面的元素移到右侧
 inner--;//依次比较
 }
 nums[inner]=temp;//直到找到正确的位置
 }
 }
 function show(nums){//显示数组
 for(var i=0;i<nums.length;i++){
 document.write(nums[i]+' ');
 }
 document.write('<br>');
 }
 var nums=[6,10,0,6,5,8,7,4,2,7];
 show(nums);//6 10 0 6 5 8 7 4 2 7
 insertSort(nums);
 show(nums);//0 2 4 5 6 6 7 7 8 10
</script>
 </body>
</html>

排序过程如下:

可以看到,插入排序的运行并非通过数据交换,而是通过将较大的数组元素移动到右侧,为数组左侧的较小元素腾出位置。其时间复杂度为O(n2)。

JavaScript 插入排序 算法