JS实现直接插入排序
2015-06-21 09:57
681 查看
直接插入排序:把数组分为已排序和未排序两部分,把未排序的元素一次一个插入到已排序部分的合适位置上。已排序部分逐渐增大,直到整个数组变成有序的。
设数组为a
。
1.初始时,a[0]自成1个有序区,无序区为a[1]、a[2]...a[n-1]。令i=1
2.将a[i]并入当前的有序区a[0]、a[1]...a[i-1]中形成a[0]、a[1]...a[i]的有序区间。
3.i++并重复第二步直到i==n-1。排序完成。
下面通过一个例子来说明这个排序流程:
待排序列: 49, 38 , 65 , 97, 76 , 13, 27 ,49
插入49: 49
插入38: 38, 49
插入65: 38, 49, 65
插入97: 38, 49, 65, 97
插入76: 38, 49, 65, 76, 97
插入13: 13, 38, 49, 65, 76, 97
插入27: 13, 27, 38, 49, 65, 76, 97
插入49: 13, 27, 38, 49, 49, 65, 76, 97
设数组为a
。
1.初始时,a[0]自成1个有序区,无序区为a[1]、a[2]...a[n-1]。令i=1
2.将a[i]并入当前的有序区a[0]、a[1]...a[i-1]中形成a[0]、a[1]...a[i]的有序区间。
3.i++并重复第二步直到i==n-1。排序完成。
下面通过一个例子来说明这个排序流程:
待排序列: 49, 38 , 65 , 97, 76 , 13, 27 ,49
插入49: 49
插入38: 38, 49
插入65: 38, 49, 65
插入97: 38, 49, 65, 97
插入76: 38, 49, 65, 76, 97
插入13: 13, 38, 49, 65, 76, 97
插入27: 13, 27, 38, 49, 65, 76, 97
插入49: 13, 27, 38, 49, 49, 65, 76, 97
<script> function insertSort(arr){ var len=arr.length; var temp,i,j; for(i=1;i<len;i++){ temp=arr[i]; //暂时保存待插入元素 for(j=i-1;j>=0;j--){ if(temp<arr[j]){ arr[j+1]=arr[j] } else{ break; } } arr[j+1]=temp; } } var arr=[49,38,65,97,76,13,27,49]; insertSort(arr); alert(arr); </script>上面实现的思路是:每次带插入元素a[i]先和已排序列中最后一个元素a[i-1]进行比较,如果a[i]>a[i-1],则直接把a[i]放在已排序列的末尾就行,无需调整,否则就令j=i-1,temp=a[i]。然后一边将数据a[j]向后移动一边向前搜索,当有数据a[j]<a[i]时停止并将temp放到a[j + 1]处。
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- 插入排序
- javascript实现10进制转为N进制数
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 异步流程控制:7 行代码学会 co 模块
- JavaScript拆分字符串时产生空字符的原因
- IE8开发人员工具教程(二)
- 在flex中执行一个javascript方法的简单方式
- Flex结合JavaScript读取本地路径的方法
- PowerShell中执行Javascript的方法示例
- javascript asp教程第六课-- response方法
- javascript asp教程More About Recordsets
- javascript asp教程第十二课---session对象
- javascript asp教程创建数据库连接
- javascript asp教程错误处理