function test(){
        var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
        var result = [];//最终输出结果
        result.push(arr[0]);//排序之后直接将第1、2位的数据放入最终结果之中
        result.push(arr[1]);
    var l = 1;//定义该从何处插入数组值
    var lNum = parseInt(arr[0]),rNum = parseInt(arr[1]);//最终结果的左右侧的数值之和
    var boor = false;//这个定义是用于对循环进行限制,从第三个数据开始,每两个进行比对,第一个比对后,第二个就不用再进行循环了!
    for (var i = 2 ; i < arr.length; i++) {//两翼数据平衡第一次
        if((arr.length)%2 == 0){//判断输入的数组长度是否为偶数
            if(boor){
                boor = false;
                continue;
            }else{
                boor = true;
                result.splice(l,0,arr[i+1]);
                l ++;
                result.splice(l,0,arr[i]);
            }
        }else{
            if(i == arr.length-1){
                result.splice(l,0,arr[i]);
            }else if(boor){
                boor = false;
                continue;
            }else{
                boor = true;
                result.splice(l,0,arr[i+1]);
                l ++;
                result.splice(l,0,arr[i]);
            }
        }           
    }
    //两翼数据平衡处理第二次
    var lIndex = 0;//初始result左部索引号
    var rIndex = result.length-1;//初始result右部索引号
    var lSum = 0,rSum = 0;//存放左右两端数据的和
    for (var i = 0; i < Math.floor(result.length/2);i++) {//需要求和的次数为数组长度的一半,这里需要注意当数组长度为偶数时,默认左边少进行一次求和,保证最大数在中间部分
        if((result.length)%2 == 0){
            rSum += parseInt(result[rIndex]);
            rIndex --;
            if(i < (result.length/2)-1){
                lSum += parseInt(result[lIndex]);
                lIndex ++;
            }              
        }else{  
            lSum += parseInt(result[lIndex]);
            lIndex ++;
            rSum += parseInt(result[rIndex]);
            rIndex --;
        }
    }
    if(lSum < rSum-3){//两翼数据平衡处理第三次,根据第二次结果来判断执行,减去3的目的是限制两边之差,若小于3则不用进行比对,直接输出便可
        var gap = Math.abs(lSum - rSum)-3;//数值差的绝对值
        for (var i = gap; i > 0; i--) {
             for (var j = Math.floor((result.length/2)) ; j < result.length; j++ ) {
                if(i == parseInt(result[j])){
                    var a = result.slice(j,j+1);
                    result.splice(j,1);
                    if(j == result.length){
                        result.splice(1,0,a);
                    }else{
                        result.splice(result.length-j,0,a);
                    }                       
                    alert(result);
                    return;//满足条件,不用再进行数据交换了,结束整个循环;
                }
             }
        }
    }else{
        alert(result);
    }
    }

数组排序(中间大两边小)相关推荐

  1. js数组排序 中间大两边小

    思路:先把数组内的元素进行排序 然后对数组遍历通过index来进行单双数判断头部添加还是尾部添加 实现: let arrCount = [1,4,5,8,89,44,15,13,110,120,150 ...

  2. html中间大两边小轮播代码,vue使用swiper实现中间大两边小的轮播图效果

    项目中使用的vue,刚好有需求要实现轮播图,突出显示当前图片,两边展示其他图片:通过查各种资料,实现了,故在此记录下来 下面我们来看下实现步骤: 第一步:首先在项目index.html中引入swipe ...

  3. vue 卡片轮播 中间大两边小 复制代码就可使用

    vue开发中遇到类似原生这种卡片轮播,中间大两边小的需求 网上搜了下,很多都是修改前一个和后一个的高度,然后设置了margin-top,但个人感觉这样病不能保证很好的居中,在研究了官网的demo后,发 ...

  4. ios中间大,两边小的轮播图

    首先上图 , 中间大,两边小的轮播图 ,git地址 : https://github.com/guochaoshun/LunBoTu 主要参考代码 : https://github.com/orzzh ...

  5. html实现轮播图--小圆圈呈中间大两边小的样式

    这个轮播图的样式是参照奔驰官网的,原始效果图大概是这样 轮播图下面的小圆圈呈现出中间大,两边小的效果.先来看看最终的成品: 分析:假设按照奔驰官网的一样,轮播的图片有6张.明显可以看出,每个大圆的一侧 ...

  6. 不等式大两边小中间_不等式取值范围口诀

    不等式取值范围口诀2019-09-27 11:13:46文/宋则贤 不等式就是用大于,小于,大于等于,小于等于连接而成的数学式子.不等式取值范围口诀为同大取大,同小取小.大大小小没有解,大小小大取中间 ...

  7. 不等式大两边小中间_两边-还是小于取中间,大于取两边?是大于取中间, – 手机爱问...

    2019-03-27 如何证明三角形两边之和大于第三边,两边之差小于第三边? 证明: 假设构成三角形的三条边分别为:a.b.c,且a.b.c大小任意: ①先证明:a+b>c: 因为a.b.c都为 ...

  8. swiper + vue 中间大两边小轮播图

    展示效果 代码 字体16px 框架vuetify <template><v-main><div class="body_height ofs"> ...

  9. 微信小程序:轮播图中间大两边小、中间高亮显示

    效果展示: test.wxml: <swiper display-multiple-items='1' current='{{ centerItem }}' bindchange='change ...

最新文章

  1. 我焦躁,并不只是心里承受,还是因为我上面担着。
  2. php不缓存直接输出,如何在PHP中禁用输出缓冲
  3. 平时的鸿星尔克VS开挂后的鸿星尔克
  4. Go 编码建议——项目布局
  5. 寻找电路布线最短路径算法BFS
  6. 阿里巴巴16字真言 | 管理者的基本要求是什么?
  7. 58-最小乘积(基本型)
  8. 华旭 身份证读卡器测试软件_华旭身份证读卡器阅读软件8.0版本 支持免驱
  9. 互联网知识变现,不起眼利润高的冷门行业有哪些?
  10. Android之UVC调试
  11. html 出现脚本错误,当前页面脚本发生错误,教您当前页面脚本发生错误的解决方法...
  12. ”消费全返“是割韭菜,非也,广告电商引领全新“全返”模式
  13. 数据结构循环队列C++实现
  14. 【翻译辅助】开源CAT翻译辅助软件OmegaT协同翻译
  15. ant design Vue 纯前端实现分页
  16. Nacos服务健康监测
  17. Spring+Netty+Vue 网页版聊天应用,仿微信网页版聊天
  18. 在线圆型针织内衣机织物CAD系统设计
  19. 如何系统地学习计算机科学与技术?六步帮你轻松自学
  20. ONEXBBC后台登录时需要shopexID

热门文章

  1. 年度最佳 | 国产开源、多租户、数字孪生 IoT 物联网平台
  2. Java Stream的流操作,居然让我的代码越写越丝滑?
  3. IEEE1394(火线)接口全面了解
  4. linux vim撤销上次编辑,vim撤销与重做
  5. 领导力提升必看的10本书
  6. 笔记 -- 逆变电感设计4
  7. 鸿蒙测试版苹果,手机鸿蒙OS测试版开放日期确定;2021款iPad Pro将搭载OLED面板
  8. OpenCV笔记—进阶篇(图像效果处理)
  9. 【Pygame实战】只有一个币,投《勇者大冒险》还是《街霸》?(经典复刻,谁的青春回来了?)
  10. Vim 编辑器的使用