我刚接触JavaScript,我有一个包含数字的数组。
var arr = [2,4,8,1,5,9,3,7,6];
我该如何使用JavaScript中的本地for循环对其进行排序?
我知道有sort函数可用,但我想通过for循环来实现。
输出应为:
var res = [1,2,3,4,5,6,7,8,9];
我刚接触JavaScript,我有一个包含数字的数组。
var arr = [2,4,8,1,5,9,3,7,6];
我该如何使用JavaScript中的本地for循环对其进行排序?
我知道有sort函数可用,但我想通过for循环来实现。
输出应为:
var res = [1,2,3,4,5,6,7,8,9];
var Arr = [1, 7, 2, 8, 3, 4, 5, 0, 9];
for (var i = 1; i < Arr.length; i++)
for (var j = 0; j < i; j++)
if (Arr[i] < Arr[j]) {
var x = Arr[i];
Arr[i] = Arr[j];
Arr[j] = x;
}
console.log(Arr);
var input = [2,3,8,1,4,5,9,7,6];
var output = [];
var inserted;
for (var i = 0, ii = input.length ; i < ii ; i++){
inserted = false;
for (var j = 0, jj = output.length ; j < jj ; j++){
if (input[i] < output[j]){
inserted = true;
output.splice(j, 0, input[i]);
break;
}
}
if (!inserted)
output.push(input[i])
}
console.log(output);
首先创建一个空数组,用于存储排序后的数字。
let sorted = [];
其次,创建大量数字,确保这些数字都不会与数组中的任何数字匹配。这个数字将用于第一次比较,以确定数组中哪个数字更小。
let comparison = 9000000000;
创建一个 for 循环。
此循环将包含另一个循环。内部循环将检查给定数组中最小的数字,并一旦获取到最小的数字,它将被推入我们创建的空数组中。最小的数字也将从初始数组中删除,然后再次运行该数组。
for(a = 0; a < arr.length; a++){
//This inner loop fetches the smallest number.
for(b = 0; b < arr.length; a++){
if(comparison > arr[b]){
comparison = arr[b];
}
}
// The smallest number is assigned to comparison
// Now it being pushed to the empty array
sorted.push(comparison);
// Remove the smallest number from the initial array
let indexOfSmallNumber = arr.indexOf(comparison);
arr.splice(indexOfSmallNumber, 1);
// Set the comparison back to 9000000000;
comparison = 90000000000;
a = -1;
// Here, "a" is our main loop index counter and we are
// setting it to -1 because we don't want it to change
// to 2 by default, doing this will make the loop run
// forever until the initial array is empty.
}
使用:
let s = [4, 6, 3, 1, 2];
for (let i = 0; i < s.length;) {
if (s[i] > s[i + 1]) {
let a = s[i];
s[i] = s[i + 1];
s[i + 1] = a;
i--;
}
else {
i++;
}
}
这是一种排序算法,其最佳时间复杂度为O(n),最坏时间复杂度为O(n^2)。
此代码检查每个数字,然后与左侧的所有数字进行比较。
要检查每个代码运行所需的时间,您还可以使用下面的代码:
let start = process.hrtime.bigint()
let end = process.hrtime.bigint()
console.log(end - start) // This measures the time used in nano seconds.
对于微秒级别的计时,您可以使用 performance.now() 方法。
[2, 4, 8, 1, 5, 9, 3, 7, 6]
。 - Peter Mortenseni < s.length - 1
,而 i--
应该有一个保护条件以防它变成负数。 - Alistair Wardi
。最好将其表达为“while”循环。这是一个非常复杂的冒泡排序吗?有人试图通过使用一个循环来实现冒泡排序而变得聪明吗?至少应该在答案中解释清楚。 - Peter Mortensen这里有一个非常简单的解决方案,它使用一个临时数组来存储大于当前值的值。然后将当前值放置在较小和较大值之间:
var arr = [2,4,8,1,5,9,3,7,6];
var res = [];
for (const c of arr) {
let tmp = [];
while (c < res[res.length-1]) {
tmp.unshift(res.pop());
}
res = [...res, c, ...tmp];
}
let arr = [4, 2, 5, 1]
let temp;
function converter(arr) {
for(let i=0; i<arr.length; i++) {
for (let j=i+1; j<arr.length; j++) {
if(arr[i] > arr[j]) {
temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
}
}
}
return arr
}
const newArr = converter(arr)
console.log(newArr)
// Ascending points
var points = [5.0, 3.7, 1.0, 2.9, 3.4, 4.5];
var output = [];
var i;
for (i = 0; i < points.length; i++) {
points.sort(function (a, b) {
return a - b
});
output += points[i] + "<br>";
}
console.log(output);
// Descending points
var points = [5.0, 3.7, 1.0, 2.9, 3.4, 4.5];
var output = [];
var i;
for (i = 0; i < points.length; i++) {
points.sort(function (a, b) {
return b - a
});
output += points[i] + "<br>";
}
console.log(output);
points.sort(function(a,b) { return a-b }); console.log(points);
。但这个答案并不是很有帮助,因为问题中包含“使用本机For Loop”。 - Holgerfor (let i = 0; i < numbers.length; i++) {
for (let j = i + 1; j < numbers.length; j++) {
if (numbers[i] > numbers[j]) {
const temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
}
}
[4, 6, 3, 1, 2]
。 - dipenparmar12for (let i = 0; i < numbers.length; i++) { for (let j = i + 1; j < numbers.length; j++) { if (numbers[i] > numbers[j]) { const temp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = temp; } } }
- sabarinathconst array = [12, 3, 45, 61, 23, 45, 6, 7];
function sortArray(array) {
for (var i = 0; i < array.length; ++i) {
for (var j = 0; j < array.length - 1 - i; ++j) {
if (array[j] > array[j + 1]) {
[array[j], array[j + 1]] = [array[j + 1], array[j]];
}
}
}
return array;
}
console.log(sortArray(array));
这是同一个算法的两个解决方案:
解决方案1:
我们可以直接使用JavaScript函数:
let arr = [2, 4, 8, 1, 5, 9, 3, 7, 6]
const changeOrder = (arr) => {
return arr.sort((a, b) => a - b)
}
let result = changeOrder(arr);
console.log(result) // [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
解决方案2:
我们可以使用 JavaScript 的 for 循环来实现相同的功能。
let arr = [2, 4, 8, 1, 5, 9, 3, 7, 6]
const changeOrder = (arr) => {
for(let i=1; i< arr.length; i++) {
for(let j=0; j < i; j++) {
if(arr[i] < arr[j]) {
let x = arr[i]
arr[i] = arr[j]
arr[j] = x
}
}
}
return arr;
}
let result = changeOrder(arr);
console.log(result) // [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
.sort()
函数。) - nnnnnnarr.sort()
。 - deceze