需求:

一个数组var arr = [4,7,2,9],排序后的新数组var newArr = [2,4,7,9]或者[9,7,4,2]

我们要得到的是排序后元数组的每一项在新数组中的位置所构成的数组:[2,4,7,9]对应[1,2,0,3]/[9,7,4,2]对应[2,1,3,0]

方案一:

 Array.prototype.getIndex = function () {
var orderLength = this.length;
var temp, tp;
var c = [];
for(var l = 0; l < orderLength; l++) {
c[l] = l;
}
for(var u = 0; u < orderLength; u++) {
for (var v = 0; v < orderLength-u-1; v++){
if (this[v] > this[v+1]) {
temp = this[v];
this[v] = this[v+1];
this[v+1] = temp;
tp = c[v];
c[v] = c[v+1];
c[v+1] = tp;
}
}
}
return c;
//return this;
}
var arr = [4,7,2,9];
console.log(arr.getIndex());

方案二:

 var a = [4,7,2,9];
var newArr = [];
for (var i = 0, n = a.length; i < n; ++i) {
newArr.push({
data: a[i],
index: i
})
}
newArr.sort(function (a, b) {
return a.data - b.data;
})
var index = [];
for (var i = 0, n = newArr.length; i < n; ++i) {
index.push(newArr[i].index);
}
console.log(newA);

本人愚笨只想到这两种解决方案,求更好的方案

获取数组排序后的index算法实现的更多相关文章

  1. 随手练——O(n)解决无序数组排序后的相邻最大差值

    题目从这儿看到的 : https://mp.weixin.qq.com/s/2OXg67MfBuQjDPAJxxD8rQ,但是公众号上讲错了,问题还挺严重的. 题目知识点:桶排序. 题目:有一个无序数 ...

  2. Python实现改进后的Bi-RRT算法实例

    Python实现改进后的Bi-RRT算法实例 1.背景说明 以下代码是参照上海交通大学海洋工程国家重点实验室<基于改进双向RRT的无人艇局部路径规划算法研究>的算法思想实现的. 2.算法流 ...

  3. Jquery插件实现点击获取验证码后60秒内禁止重新获取

    通过jquery.cookie.js插件可以快速实现“点击获取验证码后60秒内禁止重新获取(防刷新)”的功能 先到官网(http://plugins.jquery.com/cookie/ )下载coo ...

  4. [转载]jquery获取元素索引值index()方法:

    jquery的index()方法 搜索匹配的元素,并返回相应元素的索引值,从0开始计数. 如果不给 .index() 方法传递参数,那么返回值就是这个jQuery对象集合中第一个元素相对于其同辈元素的 ...

  5. jquery获取元素索引值index()方法

    jquery的index()方法 搜索匹配的元素,并返回相应元素的索引值,从0开始计数. 如果不给 .index() 方法传递参数,那么返回值就是这个jQuery对象集合中第一个元素相对于其同辈元素的 ...

  6. 简单的 Android 拍照并显示以及获取路径后上传

    简单的 Android 拍照并显示以及获取路径后上传 Activity 中的代码,我只贴出重要的事件部分代码 public void doPhoto(View view) { destoryBimap ...

  7. selenium获取元素后用click()点击没有作用,用Keys.ENTER就可以成功

    selenium获取元素后用click()点击没有作用,用键盘输入enter(Keys.ENTER)就可以成功 #coding = utf-8 from selenium import webdriv ...

  8. 李宏毅机器学习笔记4:Brief Introduction of Deep Learning、Backpropagation(后向传播算法)

    李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...

  9. Jquery UI 中的datepicker() ,获取日期后的回调函数onClose()

    <head> //引入相关的css/js <link rel="stylesheet" href="//code.jquery.com/ui/1.10. ...

随机推荐

  1. 在jybot下跑Selenium2Library

    应用场景:项目组要将原有SeleniumLibrary写的脚本切换到Selenium2Library(后称S2L)下,但是原来有很多Java写的库,综合考虑认为还是在Jython下跑比较合适.但是安装 ...

  2. java(2014)实现对mysql数据库分页的代码

    package util; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultS ...

  3. [转]NTLM身份验证

    链接:http://www.360doc.com/content/12/0615/14/10216164_218320534.shtml 在允许的环境下,Kerberos是首选的认证方式.在这之前,W ...

  4. [转]vector iterator not incrementable 的问题

    转自:http://blog.csdn.net/kuaile123/article/details/11105115 vector::erase误使用问题: 暂时使用经验: 不能在循环中使用,否则会报 ...

  5. dojo grid 分页

    dojo很强大,也很方便,但是缺少文档,只能看源代码,也挺好的,就是费时间... 网上找了一段代码(找不到原出处了,不好意思),也看了dojo自带的demo,放一段可以执行的页面代码这里.把ip换成自 ...

  6. Backbone

    app.js作为backbone 业务代码主模块,内容很简单,在页面加载完之后,对AppView进行了实例化

  7. position:sticky用法

    用户的屏幕越来越大,而页面太宽的话会不宜阅读,所以绝大部分网站的主体宽度和之前相比没有太大的变化,于是浏览器中就有越来越多的空白区域,所以你可能注意到很多网站开始在滚动的时候让一部分内容保持可见,比如 ...

  8. hdu1232 畅通工程

    畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  9. httpclient发起https请求以及获取https返回内容

    工作中的需要,使用Apache httpclient发起获取通过https返回的内容,试了很多网上的解决办法都不行,查阅了Apache httpclient的官方文档,最后终于找出解决方法,分享给需要 ...

  10. 使用 preferredStatusBarStyle 设置状态栏颜色

    iOS9之前,在plist文件中 插入一个新的key,名字为View controller-based status bar appearance,并将其值设置为NO. 然后敲入代码: [UIAppl ...