c++排序函数对⼆维数组排序_数组排序前⾔
熟悉数组和字符之间的转化,可以参考我之前的⽂章
zhuanlan.zhihu/p/186438076z huanlan.zhihu
熟悉⼗⼤排序算法
JS⼏种数组排序及sort的实现
给出以下数组,并进⾏排序处理
var arr = new Array('1','3','8','2','3','5');
插⼊法排序
插⼊法排序,即那数组的后边⼀项和前⾯⼀项对⽐,如果后⾯⼀项⼩于前⾯
⼀项,则将两者位置互换,从数组第2个元素开始对⽐
Array.prototype.csSort = function() {
var newarr = this;
for (let i = 1; i < newarr.length; i++) {
for (let j = i; j > 0; j--) {
if (newarr[j] < newarr[j-1]) {
let pre = newarr[j];
newarr[j] = newarr[j-1];
newarr[j-1] = pre;
};
};
};
return newarr;
}
console.log(arr.csSort().toString());
数组排序
案例:
案例:
给出正整数数组 array = [2,1,5,3,8,4,9,5]
请写出⼀个函数 sort,使得 sort(array) 得到从⼩到⼤排好序的数组 [1,2,3,4,5,5,8,9]
新的数组可以是在 array ⾃⾝上改的,也可以是完全新开辟的内存。
第⼀种:使⽤ JS 内置的 sort API
第⼆种:不使⽤ JS 内置的 sort API
sort API⽅法
array = [2,1,5,3,8,4,9,5];
arr = array.sort();
console.log(arr);
//[1, 2, 3, 4, 5, 5, 8, 9]
默认地,sort() 函数按照字符串顺序对值进⾏排序。
该函数很适合字符串("Apple" 会排在 "Banana" 之前)。
不过,如果数字按照字符串来排序,则 "25" ⼤于 "100",因为 "2" ⼤于 "1"。
正因如此,sort() ⽅法在对数值排序时会产⽣不正确的结果。
我们通过⼀个⽐值函数来修正此问题:
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
//1,5,10,25,40,100
使⽤相同的技巧对数组进⾏降序排序:
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
JavaScript Êý×éÅÅÐòw ww.w3school js数组排序 - 抱臂柴 - 博客园w wwblogs JS数组排序:使⽤reverse()和sort()⽅法c.biancheng
sort排序:
递归
获取最⼩值⼩标
let minIndex = (numbers) =>{
let index = 0 //提前放⼊⼀个数到篮⼦⾥
for(let i=1;i<numbers.length;i++){ //遍历所有数
if(numbers[i]<numbers[index]){ //当前值与篮⼦⾥第⼀项进⾏⽐较:如果⼩于第⼀项,则互换位置
index = i //重要:把当前i赋值给index
}
}
return index //返回最⼩值索引!!(篮⼦)
}
---------------------------------------------------------------------------------------------
任意长度的数组排序
let sort = (numbers) => {
if(numbers.length>2){
let index = minIndex(numbers)
let min = numbers[index]
number.splice(index,1)
return [min],concat(sort(numbers))
}else{
return numbers[0]<numbers[1]?verse()
}
}
循环
获取最⼩值下标
let minIndex = (numbers) =>{
let index = 0 //提前放⼊⼀个数到篮⼦⾥
for(let i=1;i<numbers.length;i++){ //遍历所有数
if(numbers[i]<numbers[index]){ //当前值与篮⼦⾥第⼀项进⾏⽐较:如果⼩于第⼀项,则互换位置 index = i //重要:把当前i赋值给index
}
}
return index //返回最⼩值索引!!(篮⼦)
}
交换代码
let swap = (array,i,j)=>{
let temp = array[i]
array[i] = array[j]
array[j] = temp
}
---------------------------------------------------------------------------------------------
任意长度的数组排序
let sort = (numbers)=>{
if(numbers.length>2){
for(let i=0;i<numbers.length-1;i++){
let index = minIndex(numbers.slice(i))+i
swap(numbers,index,i)
js 二维数组}
}else{
return numbers[0]<numbers[1]?verse()
}
}
反转数组
reverse() ⽅法反转数组中的元素。reverse()
您可以使⽤它以降序对数组进⾏排序:
array = [2,1,5,3,8,4,9,5];
arr = verse();
console.log(arr);
//[5, 9, 4, 8, 3, 5, 1, 2]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论