获取数组排序后的index算法实现
2015-03-01 15:56
232 查看
需求:
一个数组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]
方案一:
方案二:
本人愚笨只想到这两种解决方案,求更好的方案
一个数组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);
本人愚笨只想到这两种解决方案,求更好的方案
相关文章推荐
- 算法基础:数组指定规则排序问题(Golang实现)
- 【LeetCode-面试算法经典-Java实现】【108-Convert Sorted Array to Binary Search Tree(排序数组转变为平衡二叉树)】
- 【LeetCode-面试算法经典-Java实现】【004-Median of Two Sorted Arrays(两个排序数组的中位数)】
- Java通过几种经典的算法来实现数组排序
- Linux_C练习:利用指针数组实现字符串的排序。(从键盘获取五个字符串)
- 【LeetCode-面试算法经典-Java实现】【081-Search in Rotated Sorted Array II(搜索旋转的排序数组)】
- 怎样编写一个程序,把一个有序整数数组放到二叉树中? 编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?
- Java集合与数组实现升序排序的算法设计
- 小根堆对数组排序C语言算法实现
- 【LeetCode-面试算法经典-Java实现】【088-Merge Sorted Array(合并排序数组)】
- Javascript 数组自定义排序,并获取排序后的保存原索引的同序数组(堆排序实现)
- 【算法】快速排序算法(递归实现 从小到大排列) 排序范围(0~n-1) n为数组元素个数
- C语言 选择排序算法原理和实现 从数组中 找出最小的元素然后交换位置
- Java通过几种经典的算法来实现数组排序
- 算法兴趣----- 一亿数据获取前100个最大值(仅供参考,基于快速排序的实现时间不稳定,基于最小堆实现。如果我们只要求前K个最大(小)值的时候,用堆是最好的选择,因为这里不用每次都排序了)
- 【LeetCode-面试算法经典-Java实现】【026-Remove Duplicates from Sorted Array(删除排序数组中的重复元素)】
- ACM -- 算法小结(一)利用数组存放实现排序
- 在有序的数组中获取目标值的地址——二分查询算法(java实现)
- C#中定义数组和一个简单排序算法实现。
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 习题2.8 随机数组的三种生成算法(补) 将bash的实现翻译成比较纯正的bash风格