JavaScript基础巩固(1):sort排序
发布于 7 年前 作者 jamesxieliang11 3963 次浏览 来自 分享

###七夕了,孤独的程序狗发一条 最近在看JavaScript标准库,有点小心得,前戏就不做了,直接上代码。 // 数组的sort排序函数用法

function sortNumber(a,b)
{
console.log(a,b)
return a - b
}
var arr =["10", "5", "40", "25", "1000", "1"];
console.log(arr)
console.log(arr.sort(sortNumber))

// 数组的sort排序思路模拟

var arr = [10,5, 40, 25, 1000, 1]
for(var i=0;i<=arr.length;i++){
	if(arr[i]>arr[i+1]){
		var m=arr[i];
		arr[i]=arr[i+1];
		arr[i+1]=m;
		i=i-2;
		console.log(i)
	}
}

心情略烦,今天就不解释了,,有人交流一定会回。。没人就沉了吧

10 回复

sort 排序用了两种排序方式,数组元素少的的使用选择排序,数组元素多的使用快速排序。 楼主这个排序也挺牛的,这个是递归不?

@nighthere 不是 第一个是原生的方法 第二个是自己参照原生写的 不知道对不对。。可能还要优化吧 惭愧

有写vb的朋友表示,交换两个值得时候可以不借助第三个值,即

		var m=arr[i];
		arr[i]=arr[i+1];
		arr[i+1]=m;

改为

		arr[i]=arr[i]+arr[i+1];
		arr[i+1]=arr[i]-arr[i+1];
		arr[i]=arr[i]-arr[i+1];

也有朋友说用归并排序。。看了下,有点迷

这个排序交换元素之后,i = i - 2 配合 i++,玩的溜呀!涨姿势了!一次循环就把一个元素安排到位,有点回溯的意思!不过内部排序复杂度还是不会有啥大变化~ 这要是 java 或者 C 来写,先判断下数组是否越界~

@jamesxieliang11 这是个数学游戏,A = a + b; B = a + b - b; A = a + b - a

@DevinXian 是的 其实是模仿sort的思想写的 还好是javascript。。之前刚发就被写的java朋友质疑了 哈哈哈

@DevinXian 惭愧 以前交换都是直接用第三个值存的。。哈哈 被这么点一下 突然觉得自己是不是以前写的很多代码都需要review一下 很多代码都是按一个思路写的 ,很少去考虑有没有更好更适合的方法

厉害 es6里[x, y] = [y, x]来一下就O了

@hxc1995 惭愧了 只是看了点es用法 很少实际应用 很赞

受益匪浅,谢谢大家指点 var arr = [10,5, 40, 25, 1000, 1] for(var i=0;i<=arr.length;i++){ if(arr[i]>arr[i+1]){ [arr[i],arr[i+1]]=[arr[i+1],arr[i]] i=i-2; } } console.log(arr)

回到顶部