如何在不用sort()方法下用js将数组arr=[5,8,7,9,3,6,4,1,2]排序?
时间: 2023-09-30 09:10:00 浏览: 152
可以使用冒泡排序的方式来排序,代码如下:
```javascript
// 定义数组
var arr = [5, 8, 7, 9, 3, 6, 4, 1, 2];
// 冒泡排序
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 打印排序后的数组
console.log(arr);
```
以上代码通过两层循环实现冒泡排序的方式,进行数组的排序。
相关问题
如何用js将数组arr=[5,8,7,9,3,6,4,1,2]排序?
您好!对于您的问题,可以使用JavaScript中的sort()方法对数组进行排序,具体实现如下:
```
var arr = [5,8,7,9,3,6,4,1,2];
arr.sort(function(a, b){return a-b});
console.log(arr); // 输出 [1, 2, 3, 4, 5, 6, 7, 8, 9]
```
sort()方法会按照Unicode编码顺序对数组进行排序。为了确保数组按照数字大小进行排序,可以传入一个比较函数作为参数。比较函数接收两个参数,返回一个负数表示第一个参数应该排在前面,返回0表示两个参数相等,返回一个正数表示第二个参数应该排在前面,因此可以将函数定义为`function(a, b){return a-b}`来实现按照数字大小进行排序。
希望这个回答能够帮到您,有任何其他问题可以随时问我。
4) 从头遍历,每次从后面的牌中选一个与前面的交换(并不能完全随机) 将数组var arr = [0,1,2,3,4,5,6], 顺序打乱 5) 新建一个临时数组,从原数组中随机抽取,存入新数组(可以完全随机) 将数组var arr = [0,1,2,3,4,5,6], 顺序打乱 6) 调用 数组 的 sort 方法, 时间复杂度较高 将数组var arr = [0,1,2,3,4,5,6], 顺序打乱
好的,下面是分别实现题目中的三种打乱数组的方法:
1. 交换法:
```javascript
function shuffle1(arr) {
for (let i = 0; i < arr.length; i++) {
const j = Math.floor(Math.random() * (arr.length - i) + i);
[arr[i], arr[j]] = [arr[j], arr[i]];
}
return arr;
}
const arr = [0, 1, 2, 3, 4, 5, 6];
console.log(shuffle1(arr)); // [2, 3, 5, 4, 0, 6, 1]
```
2. 抽取法:
```javascript
function shuffle2(arr) {
const result = [];
while (arr.length) {
const index = Math.floor(Math.random() * arr.length);
result.push(arr.splice(index, 1)[0]);
}
return result;
}
const arr = [0, 1, 2, 3, 4, 5, 6];
console.log(shuffle2(arr)); // [3, 6, 1, 5, 2, 0, 4]
```
3. sort 方法:
```javascript
function shuffle3(arr) {
return arr.sort(() => Math.random() - 0.5);
}
const arr = [0, 1, 2, 3, 4, 5, 6];
console.log(shuffle3(arr)); // [4, 0, 3, 6, 2, 5, 1]
```
需要注意的是,第三种方法的时间复杂度较高,在大规模数据处理时,不建议使用。而前两种方法的时间复杂度都为 O(n),效率比较高。
阅读全文