首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数组升序排序后如何存储数组的原始索引

在数组升序排序后,如果需要存储数组的原始索引,可以使用一个额外的数据结构来保存原始索引与数组元素的对应关系。一种常见的做法是创建一个新的数组,其中每个元素是一个对象,包含原始数组的值和对应的索引。

以下是一个示例代码:

代码语言:txt
复制
// 原始数组
var arr = [5, 2, 8, 1, 9];

// 创建一个新的数组来保存原始索引
var indexedArr = arr.map(function(value, index) {
  return { value: value, index: index };
});

// 对新数组进行升序排序
indexedArr.sort(function(a, b) {
  return a.value - b.value;
});

// 输出排序后的数组和对应的原始索引
for (var i = 0; i < indexedArr.length; i++) {
  console.log("值:" + indexedArr[i].value + ",原始索引:" + indexedArr[i].index);
}

输出结果为:

代码语言:txt
复制
值:1,原始索引:3
值:2,原始索引:1
值:5,原始索引:0
值:8,原始索引:2
值:9,原始索引:4

在这个示例中,我们使用map方法创建了一个新的数组indexedArr,其中每个元素是一个对象,包含原始数组的值和对应的索引。然后,我们使用sort方法对新数组进行升序排序。最后,我们遍历排序后的数组,输出每个元素的值和原始索引。

对于这个问题,腾讯云没有特定的产品或链接与之相关。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

连续存储数组算法(包含数组倒置、冒泡排序……)

线性结构【把所有的结点用一根直线穿起来】   连续存储数组】、离散存储【链表】(不连续,可分隔开来) 4 #include 5 #include//包含...stdlib.h>//包含exit函数 7 //定义了一个(复合)数据类型,名字叫struct Arr,该数据类型有三个成员: 8 struct Arr{ 9 int * pBase; //存储数组第一个元素地址...10 int len; //数组所能容纳最大元素个数 11 int cnt; //当前数组有效元素个数 12 }; 13 14 void init_arr(struct...20 bool is_full(struct Arr *pArr); //判断数组是否满 21 void sort_arr(struct Arr *pArr); //排序 22 void show_arr...false 82 } 83 else{//不满时追加 84 pArr->pBase[pArr->cnt] = val;//追加元素下标就是pArr->cnt,数组目前有效长度

80820
  • 将Js数组对象中某个属性值升序排序,并指定数组某个对象移动到数组最前面

    需求整理:   本篇文章主要实现是将一个数组中对象属性值通过升序方式排序,然后能够让程序可以指定对应数组对象移动到程序最前面。...: 23},{name: "小芳", Id: 18}];   首先把数组Id值通过升序方式排序: //源数组 var arrayData= [{name: "夏明", Id:24}, {name:...1; } else { return 0; } } } var newArrayData=arrayData.sort(compare('Id'));//通过Id排序完成数组...console.log(newArrayData); 排序完成输出值: [{ name: "大袁", Id: 22 }, { name: "大姚", Id: 23 }, { name: "夏明"..., Id: 24 },{ name: "小红", Id: 25 }] 找到Id为23对象,移动到数组最前面去(注意Id值唯一): 实现原理:因为移除数组对象需要找到对应数组对象下标索引才能进行移除

    12.2K20

    漫画算法:无序数组排序最大相邻差值

    小灰一边回忆一边讲述起当时面试情景...... 题目:有一个无序整型数组如何求出这个数组排序任意两个相邻元素最大差值?要求时间和空间复杂度尽可能低。...(例如:无序数组 2,3,1,4,6,排序是1,2,3,4,6,最大差值是6-4=2) 解法一: 用一种较快稳定排序算法(比如归并算法,时间复杂度N*logN)给原数组排序,然后遍历排好序数组...解法二: 1.利用计数排序思想,先求出原数组最大值Max与最小值Min区间长度k(k=Max-Min+1)。 2.创建一个长度为k数组Array。...3.遍历原数组,把原数组每一个元素插入到新数组Array对应桶当中,进入各个桶条件是根据不同数值区间(数值区间如何划分,看后面的图就明白了)。由于桶总数量是N+1,所以至少有一个桶是空。...4.遍历新数组Array,计算每一个空桶右端非空桶中最小值,与空桶左端非空桶最大值差,数值最大差即为原数组排序相邻最大差值。

    41930

    为什么处理排序数组比没有排序快?想过没有?

    就比如说这个:“为什么处理排序数组比没有排序快?”...毫无疑问,直观印象里,排序数组处理起来就是要比没有排序快,甚至不需要理由,就好像我们知道“夏天吃冰激凌就是爽,冬天穿羽绒服就是暖和”一样。...使用 Arrays.sort() 进行排序。 通过 for 循环嵌套计算数组累加结果,并通过 System.nanoTime() 计算前后时间差,精确到纳秒级。...我本机环境是 Mac OS,内存 16 GB,CPU Intel Core i7,IDE 用是 IntelliJ IDEA,排序和未排序结果如下: 排序:2.811633398 未排序:9.41434346...但是,如果分支是不可预测,那处理器也无能为力啊,对不对? 排序花费时间少,未排序花费时间多,罪魁祸首就在 if 语句上。

    87310

    多平台下thunk技术原理以及应用

    如果需求变为在不将students中元素打乱情况下,仍希望按age大小进行排序输出显示呢?为了解决这个问题可以为students数组建立一个索引数组,然后对索引数组进行排序即可。...因为打乱索引数组顺序,而访问元素时又可以通过索引数组来间接访问,这样就可以实现原始数据内存存储顺序不改变情况下进行有序输出。...Jack"},{30,"Bob"},{10,"Lily"},{30,"Joe"}}; size_t count = sizeof(students)/sizeof(student_t); //按年龄升序索引排序比较器函数...索引技术是一种非常实用技术,尤其是在数据库系统上应用最广泛,因为原始记录存储成本和文件IO原因,移动索引数据要比移动原始记录数据要快而且方便很多,而且性能上也会大大提升。...当大量数据存储在内存中也是如此,数据记录在内存中因为排序而进行位置移动要比索引数组元素移动开销和成本大很多,而且如果涉及到多线程下要对不同成员进行原始记录排序时还需要引入锁机制。

    69120

    如何进入Google,面试算法之道:在双升序二维数组快速查找

    给定一个二维数组,它行和列都是已经按升序排列,请设计一个算法,对于给定某个值x,判断该值是否包含在数组中。...在我们以前算法讨论中曾经提到过一个法则,当看到有数组时,首先想到就是排序。如果看到排序,首先想到是二分查找,对于给定数组,它已经排好序了,那么我们可以考虑用二分查找来判断给定元素是否在数组中。...题目给定特征是,数组行和列都是升序排序,第二种做法只利用了行是升序排列这一性质,对于列升序排列并未利用到,如果能够利用到这一特性的话,那么我们就可以设计出更高效算法,由此我们得到第三种算法如下...,假设数组长度为n: 1, 用x与A[0][n-1]比较,如果 x < A[0][n-1], 那根据数组每一列都是升序排序特性,我们可以排除掉数组最后一列。...,并设置要查询数值为34,显然该值包含在数组中,然后调用TwoDArraySearch search()函数,上面代码运行结果如下: ?

    1.5K30

    matlab sort函数

    一起来学演化计算-matlab sort函数 sort 对数组元素排序 语法 B = sort(A) 按照大小不等于1第一个数组维度对A元素按升序排序 如果A是一个向量,那么sort(A)对向量元素进行排序...单字符串“ascend”表示升序(默认情况下),“descent”表示降序。 [B,I] = sort( ___ ) 返回以前任何语法索引向量集合。...即 返回排序元素索引 示例 按升序排列向量 创建一个行向量,并按升序对其元素排序 A = [9 0 -7 5 3 8 -10 4 2]; B = sort () B = -10 7 0 2 3 4...创建一个datetime值数组,按升序排序,即从最早日历日期到最近日历日期 ds = {'2012-12-22';'2063-04-05';'1992-01-12'}; A = datetime(...使用索引数组I直接访问原始数组中已排序元素 A(I) ans = 1992-01-12 2012-12-22 2063-04-05 3-D数组排序 创建一个2×2×2数组,并沿着第三维按升序排列其元素

    1K60

    大数据之脚踏实地学15--Scala数组操作

    正如前文所说,数组存储同一类型数据容器,我们可以在容器基础上对元素做一些基本操作,包括数组元素增、删、改、查、筛选、排序、排重等。...scala> println("A3排重结果为:" + A3_Dupli.mkString(",")) A3排重结果为:1,2,10,20,3 数组元素排序操作 利用数组sorted方法完成元素排序...,该方法默认为升序排序,如需降序还需要再使用reverse方法(即翻转)。...scala> val A1_Sort = A1.sorted // 默认对数组A1作升序排序 scala> println("A1升序结果为:" + A1_Sort.mkString(",")) A1...升序结果为:1,1,2,3,5,8,13 scala> val A2_Sort = A2.sorted.reverse // 对数组A2作降序排序 scala> println("A2降序结果为

    88410

    输入一个已经按升序排序数组和一个数字,在数组中查找两个数,使得它们和正好是输入那个数字

    题目: 输入一个已经按升序排序数组和一个数字, 在数组中查找两个数,使得它们和正好是输入那个数字。 要求时间复杂度是O(n)。如果有多对数字和等于输入数字,输出任意一对即可。...思路: 1 第一种思路,可以把数字存在数组里,比如数组中最大值是15,那么就开一个长度未15数组1 存在a[1]里 15存在a[15]里;这样用15-a[1]判断里面是否有值就可以了。...2 因为是求两个数,时间复杂度是O(n),还是排过顺序数组,那么可以从头和从尾同时找;从尾开始tail下标大于sum,则tail左移;如果tail和head相加小于sum,则tail右移;指导头尾两个数相加等于求和...;或者tail大于head为止; 代码如下: ''' 题目:输入一个已经按升序排序数组和一个数字, 在数组中查找两个数,使得它们和正好是输入那个数字。...如果有多对数字和等于输入数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。

    2.1K10

    php将二维数组按日期(支持Ymd和Ynj格式日期)排序

    思路: 将所有日期转化成时间戳保存在新数组里面(新数组1和新数组2), 将新数组2排序, 再将新数组2中元素逐个查找在数组1中索引, 根据索引原始数组重新排序, 最终得到排序二维数组。...- // 原始数组 $array = [         [             'date'=>'2019-2-18',         ],         [            ...(支持Ymd和Ynj格式日期)排序  * order_date_array(原始二维数组, desc还是asc, 日期在二维数组键)  * */ function order_date_array...date;     }     // 排列方式     if ($_order === 'desc'){ // 降序         rsort($array_2);     }else{ // 升序...        sort($array_2);     }     // 重新排序原始数组     for ($r=0; $r<count($array_2); $r++){

    2.9K10

    数据结构之堆 → 不要局限于堆排序

    堆中其他节点顺序是未知,大顶堆中不能确定最小值,小顶堆中不能确定最大值   数组如何实现完全二叉树   用数组来实现完全二叉树,是不是感觉很怪?...常规节点由 数据+指向孩子节点指针 组成,数组如何表现 指向孩子节点指针?   ...二叉搜索树除了需要存储数据,还需要存储指向左右孩子指针。但堆仅用一个数组存储数据,而不使用指针 平衡。...而堆目的是快速找到最大(小)节点,所以其搜索会很慢 堆操作   有两个原始操作: shiftUp 和 shiftDown 用于保证插入或删除节点,堆仍然是一个有效大顶堆或者小顶堆   上移 → shiftUp...  实现兼容了 自然比较器 和 自定义比较器 两种情况, 自然比较器 默认是升序排序 比较器 升序对应是小顶堆,降序对应是大顶堆   下移 → shiftDown   在位置 k 处插入元素

    59730

    Java 数组基本操作

    数组元素定义完成,可通过Arrays类静态方法fill()来对数组元素进行替换。...●formIndex要使用指定值填充第一个元素索引(包括) ●toIndex要使用指定值填充最后一个元素索引(不包括) ●value:要存储数组中所有元素值 public static void...sort()方法提供了多种重载形式,可对任意类型数组进行升序排序 Arrays.sort(object) 其中,object是指进行排序数组名称 public static void main...4.1copyOf(arr, int newlength) ●arr:要进行复制数组 ●newlength:int型常量,指复制数组长度。...:"+index); } 输出 cd 索引位置是:1 6.冒泡排序 6.1基本思路 冒泡排序基本思路是对比相邻原始值,如果满足条件就交互元素值,把较小元素移动到数组前面,把大原始值移动到数组后面

    64220

    iOS开发——字典升序排列以及字符串拼接

    签名算法要求如下: 第一步: 算出“签名原始串”= params中参数集合字符串(将所有字段按升序排列,依次连接所有字段名及对应值)+ method(接口名字)+ time(UTC时间戳) +请求源secret...首先我们定义一个数组存储字典中所有key值: NSArray *keyArray = [params allKeys]; 接下来我们定义一个排序数组存储排序好之后key值 NSArray...return [obj1 compare:obj2 options:NSNumericSearch]; }]; sortedArrayUsingComparator方法是苹果为我们提供一个数组排序方法...而这时,我们排序key值,已经按顺序存储在sortArray数组中,这时我们再创建一个数组,来按升序存储key对应Value,通过遍历sortArray方法。...,分别对应升序排序key和value,所以再创建一个keyValue数组存储每一个key和value格式。

    1.5K20
    领券