鱼C论坛

 找回密码
 立即注册
查看: 3471|回复: 24

[每日一练] 算法21 ◉‿◉ 插入排序

[复制链接]
发表于 2017-5-25 06:00:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2017-5-25 07:02 编辑


                               
登录/注册后可看大图


按照提示,完成代码,秀秀你的编程能力!

不许看答案,否则打屁屁





033459tza2gpcccgwpadga.gif


程序分析:
  插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。       
一般来说,插入排序都采用in-place在数组上实现。

具体算法描述如下:
<1>.从第一个元素开始,该元素可以认为已经被排序;
<2>.取出下一个元素,在已经排序的元素序列中从后向前扫描;
<3>.如果该元素(已排序)大于新元素,将该元素移到下一位置;
<4>.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
<5>.将新元素插入到该位置后;
<6>.重复步骤2~5。


源代码:
游客,如果您要查看本帖隐藏内容请回复






如果喜欢,请订阅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-6 15:58:49 | 显示全部楼层
  1. window.onload = function () {

  2.         let init = [3, 45, 211, 34, 5, 65, 7, 34, 234, 4, 2, 6, 4, 0, 234235, 234];
  3.         let sort = [];

  4.         sort[0] = init[0];

  5.         for (let i = 1, initLen = init.length; i < initLen; i++) {
  6.                 let value = init[i];
  7.                 let sortLen = sort.length;
  8.                 let j = 0;

  9.                 for (; j < sortLen; j++) {
  10.                         if (value <= sort[j]) {
  11.                                 for (let k = sortLen; k > j; k--) {
  12.                                         sort[k] = sort[k-1];
  13.                                 }
  14.                                 sort[j] = value;
  15.                                 break;
  16.                         }
  17.                 }

  18.                 if (j === sortLen) {
  19.                         sort[sortLen] = value;
  20.                 }
  21.         }

  22.         console.log(sort);

  23. };
复制代码

点评

我很赞同!: 5.0
我很赞同!: 5
  发表于 2017-9-6 16:01

评分

参与人数 1鱼币 +6 收起 理由
不二如是 + 6 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-25 10:27:35 | 显示全部楼层
还有什么是你不会的么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-25 10:36:04 | 显示全部楼层
~风介~ 发表于 2017-5-25 10:27
还有什么是你不会的么?


一个只会开车不会修车的人,怎么当鱼C最纯洁的黑天使~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-25 10:44:08 | 显示全部楼层
不二如是 发表于 2017-5-25 10:36
一个只会开车不会修车的人,怎么当鱼C最纯洁的黑天使~

有没有兴趣搞搞electron?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-19 19:16:12 | 显示全部楼层
支持楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-22 21:52:40 | 显示全部楼层
点赞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-7 20:35:10 | 显示全部楼层
谢谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-6 15:34:24 | 显示全部楼层
  1. window.onload = function(){
  2.                                 var array = [1,5,8,77,44,33,465,2,61];
  3.                                
  4.                                 function InsertionSort(arr){
  5.                                         for(var i = 1; i < arr.length;i++){
  6.                                                 for(j = 0; j < i-1;j++){
  7.                                                         if(arr[i] < arr[j]){
  8.                                                                 arr[i] ^= arr[j];
  9.                                                                 arr[j] ^= arr[i];
  10.                                                                 arr[i] ^= arr[j];
  11.                                                         }
  12.                                                 }
  13.                                                
  14.                                                  
  15.                                         }
  16.                                         return arr;
  17.                                 }
  18.                                
  19.                                
  20.                                 document.write(InsertionSort(array));
  21.                         };
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-21 19:56:28 | 显示全部楼层
难度大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-24 15:44:04 | 显示全部楼层
em
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-26 16:11:49 | 显示全部楼层
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.         <title>21</title>
  5.         <meta charset="utf-8">
  6.         <script type="text/javascript">
  7.                 window.onload=function(){
  8.                         var yip=new Array(10,13,15,18,19,22);//已排序
  9.                         var wep=new Array(9,8,17,14,16,11,20);//未排序 创建数组一个值得时候 wep=new Array([9]);
  10.                         document.write("已排序列表:"+yip+"<br>");
  11.                         document.write("未排序列表:"+wep+"<br>");
  12.                         charupx(yip,wep);
  13.                 }

  14.                 function charupx(yip,wep){
  15.                         var leny=yip.length;
  16.                         var lenw=wep.length;
  17.                         if(lenw>0){
  18.                                 var pone=wep.pop();
  19.                                 yip.push(0);
  20.                                
  21.                                 for(var i=leny-1;i>=0;i--){
  22.                                         if (yip[i]>pone) {
  23.                                                 yip[i+1]=yip[i];
  24.                                                 yip[i]=pone;
  25.                                         }
  26.                                         else{break}       
  27.                                 }
  28.                                 charupx(yip,wep);
  29.                         }
  30.                         else{document.write("已经完成排序:"+yip);}
  31.                 }
  32.         </script>
  33. </head>
  34. <body>

  35. </body>
  36. </html>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-10 17:53:46 | 显示全部楼层
不行了不行了,写不来,坐看大佬操作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-10 07:00:29 | 显示全部楼层
  1.         function fF(sequence) {
  2.                 var a = [];
  3.                 for (var i = 0; i < sequence.length; i ++) {
  4.                         if (a.length != 0) {
  5.                                 var lenA = a.length;
  6.                                 for (var j = 0; j < lenA; j ++) {
  7.                                         // 如果要插入的数 大于 列表的中数 ,那么 应该在找到自己的位置时,才会插入
  8.                                         // 找到自己的位置 意味着 要么 比所有数都大(插在最后);要么小于某个数,
  9.                                         if (sequence[i] > a[j]) {
  10.                                                 if (j == lenA -1) {
  11.                                                         // 一定要比较完所有数,在进行插入操作
  12.                                                         a.splice(j + 1,0,sequence[i]);
  13.                                                 }else {
  14.                                                         continue;
  15.                                                 }
  16.                                                
  17.                                         }else {
  18.                                                 a.splice(j,0,sequence[i]);
  19.                                                 //跳出第二个for
  20.                                                 break;
  21.                                         }
  22.                                 }
  23.                         } else {
  24.                                 a.push(sequence[i]);
  25.                         }
  26.                        
  27.                         // alert(a);
  28.                 }
  29.                 console.log(a);
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-13 23:13:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-1-24 10:04:17 | 显示全部楼层
插入排序 [修改]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-1 13:19:57 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-24 18:35:16 | 显示全部楼层
  1.         var arr = [5,4,3,2,1];
  2.         var n;
  3.         for (var i=1 ; i<arr.length ; i++){
  4.                 n = arr[i];
  5.                 for (var j=i-1 ; j>=0 ; j--){
  6.                         if (n < arr[j]){
  7.                                 arr[j+1] = arr[j];
  8.                                 arr[j] = n;
  9.                         }
  10.                         else{
  11.                                 break;
  12.                         }
  13.                        
  14.                 }

  15.         }
  16.         console.log(arr);
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-12 12:18:39 | 显示全部楼层

支持小甲鱼啊,赞~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-16 09:43:56 | 显示全部楼层
瞅瞅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 20:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表