找出元素在排序后数组中的索引
题目:数组(第一个参数)在排序后,将一个值(第二个参数)插入该数组,并使数组保持有序。返回这个新插入元素的最小索引值。 返回值应为一个数字。例如,getIndexToIns([1,2,3,4], 1.5) 应该返回 1 因为1.5 大于 1(索引为 0)且小于 2(索引为 1)。同样地,getIndexToIns([20,3,5], 19) 应该返回 2。 因为数组排序后会变成 [3,5,20],而 19 小于 20(索引为 2)且大于 5(索引为 1)
1 function getIndexToIns(arr, num) { 2 arr.push(num); 3 arr.sort((a,b)=>a-b); 4 return arr.indexOf(num); 5 } 6 getIndexToIns([40, 60], 50);
1. array.prototype.sort()方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的。由于它取决于具体实现,因此无法保证排序的时间和空间复杂性。
1 arr.sort([compareFunction])
1 function getIndexToIns(arr, num) { 2 return arr.concat(num).sort((a,b)=>a-b).indexOf(num); 3 } 4 getIndexToIns([40, 60], 50);
2. concat()
- String.prototype.concat() 方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回
1 str.concat(str2, [, ...strN])
- Array.prototype.concat()方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组
1 var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
3. indexOf()
-
Array.prototype.indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1
1 arr.indexOf(searchElement[, fromIndex])
-
String.prototype.indexOf()方法返回调用它的 String对象中第一次出现的指定值的索引,从
fromIndex处进行搜索。如果未找到该值,则返回 -1
1 str.indexOf(searchValue [, fromIndex])
1 function getIndexToIns(arr, num) { 2 let sortedArray = arr.concat(num).sort((a,b) =>a-b); 3 let res=0; 4 for(let i =0;i<sortedArray.length;i++){ 5 if(sortedArray[i]===num){ 6 return i; 7 } 8 } 9 } 10 getIndexToIns([40, 60], 50);
function getIndexToIns(arr, num) { let res = 0; for(let i = 0; i<arr.length; i++) { if(arr[i]<num){ res++; } } return res; } getIndexToIns([40, 60], 50);
1 function getIndexToIns(arr, num) { 2 return arr.filter(e => e < num).length; 3 } 4 getIndexToIns([40, 60], 50);

浙公网安备 33010602011771号