鱼C论坛

 找回密码
 立即注册
查看: 4052|回复: 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。
[/b]


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






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

使用道具 举报

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

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

        sort[0] = init[0];

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

                for (; j < sortLen; j++) {
                        if (value <= sort[j]) {
                                for (let k = sortLen; k > j; k--) {
                                        sort[k] = sort[k-1];
                                }
                                sort[j] = value;
                                break;
                        }
                }

                if (j === sortLen) {
                        sort[sortLen] = value;
                }
        }

        console.log(sort);

};

点评

我很赞同!: 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 | 显示全部楼层
window.onload = function(){
                                var array = [1,5,8,77,44,33,465,2,61];
                                
                                function InsertionSort(arr){
                                        for(var i = 1; i < arr.length;i++){
                                                for(j = 0; j < i-1;j++){
                                                        if(arr[i] < arr[j]){
                                                                arr[i] ^= arr[j];
                                                                arr[j] ^= arr[i];
                                                                arr[i] ^= arr[j];
                                                        }
                                                }
                                                
                                                 
                                        }
                                        return arr;
                                }
                                
                                
                                document.write(InsertionSort(array));
                        };
想知道小甲鱼最近在做啥?请访问 -> 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 | 显示全部楼层
<!DOCTYPE html>
<html>
<head>
        <title>21</title>
        <meta charset="utf-8">
        <script type="text/javascript">
                window.onload=function(){
                        var yip=new Array(10,13,15,18,19,22);//已排序
                        var wep=new Array(9,8,17,14,16,11,20);//未排序 创建数组一个值得时候 wep=new Array([9]);
                        document.write("已排序列表:"+yip+"<br>");
                        document.write("未排序列表:"+wep+"<br>");
                        charupx(yip,wep);
                }

                function charupx(yip,wep){
                        var leny=yip.length;
                        var lenw=wep.length;
                        if(lenw>0){
                                var pone=wep.pop();
                                yip.push(0);
                                
                                for(var i=leny-1;i>=0;i--){
                                        if (yip[i]>pone) {
                                                yip[i+1]=yip[i];
                                                yip[i]=pone;
                                        }
                                        else{break}        
                                }
                                charupx(yip,wep);
                        }
                        else{document.write("已经完成排序:"+yip);}
                }
        </script>
</head>
<body>

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

使用道具 举报

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

使用道具 举报

发表于 2019-1-10 07:00:29 | 显示全部楼层
        function fF(sequence) {
                var a = [];
                for (var i = 0; i < sequence.length; i ++) {
                        if (a.length != 0) {
                                var lenA = a.length;
                                for (var j = 0; j < lenA; j ++) {
                                        // 如果要插入的数 大于 列表的中数 ,那么 应该在找到自己的位置时,才会插入
                                        // 找到自己的位置 意味着 要么 比所有数都大(插在最后);要么小于某个数,
                                        if (sequence[i] > a[j]) {
                                                if (j == lenA -1) {
                                                        // 一定要比较完所有数,在进行插入操作
                                                        a.splice(j + 1,0,sequence[i]);
                                                }else {
                                                        continue;
                                                }
                                                
                                        }else {
                                                a.splice(j,0,sequence[i]);
                                                //跳出第二个for
                                                break;
                                        }
                                }
                        } else {
                                a.push(sequence[i]);
                        }
                        
                        // alert(a);
                }
                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 | 显示全部楼层
        var arr = [5,4,3,2,1];
        var n;
        for (var i=1 ; i<arr.length ; i++){
                n = arr[i];
                for (var j=i-1 ; j>=0 ; j--){
                        if (n < arr[j]){
                                arr[j+1] = arr[j];
                                arr[j] = n;
                        }
                        else{
                                break;
                        }
                        
                }

        }
        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-11-22 07:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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