是否可以使用 for循环 JavaScript按升序/降序对数组进行排序?
在课堂测试之前,我一直在学习JS在课本中经历一些练习题。
任何指针都将不胜感激!
a = Number(prompt("a:"));
b = Number(prompt("b:"));
c = Number(prompt("c:"));
d = Number(prompt("d:"));
e = Number(prompt("e:"));
// find largest element
var test = [a, b, c, d, e];
var biggest = -Infinity;
var biggest_index = -1; {
for (i = 0; i < test.length; i++) {
if (test[i] > biggest) {
biggest = test[i];
biggest_index = i;
}
else;
}
alert("The biggest element is " + biggest + " at index " + biggest_index);
}
// move largest element of array to the last index
test[test.length] = biggest;
// get rid of copy
test[biggest_index] = 0;
alert("Unsorted: " + test);
// shuffle ??
答案 0 :(得分:2)
如果要获取数组中的最大/最小数字,为什么不使用Math.max/Math.min
?
如果要对数组进行排序,可以使用sort
方法:
var sorted = [3, 1, 6, 2].sort(); // sort ascending
var sorted = [3, 1, 6, 2].sort(function(a, b){
return b - a;
}); // sort descending
答案 1 :(得分:1)
当然有可能。首先,您应该决定要对哪种算法进行排序。请参阅此处以获取一些精彩的视觉示例http://www.sorting-algorithms.com/
从你的例子来看,你需要另一个for循环。到目前为止,你找到了最大的,你需要另一个循环来重复你的逻辑,但找到第二个,而不是第三个,而不是第四个。等
答案 2 :(得分:0)
javascript对数组有一个排序功能。
你可以做到
alert("Sorted: "+ test.sort());
答案 3 :(得分:0)
如果您只是在寻找一种有效的数组排序方式,最好只使用the built-in sort()
method。
使用它可以很简单:
var unsortedArray = [12, 55, 35, 11, 88, 13, 6];
var sortedArray = unsortedArray.sort();
如果您因某些原因(例如教育目的)不想使用内置sort()
方法,则应该对排序算法进行一些研究。
这些是一些最流行的排序算法:
答案 4 :(得分:0)
我实际上正在使用for循环手动排序javascript数组。虽然下面的代码确实假设你正在为它提供数组(例如,不检查类型),但这是一个我只能使用for
循环的解决方案,没有内置的排序方法,也没有新的数组创作:
function sortGreatest(arr) {
// manually sort array from largest to smallest:
// loop forwards through array:
for (let i = 0; i < arr.length; i++) {
// loop through the array, moving forwards:
// note in loop below we set `j = i` so we move on after finding greatest value:
for (let j = i; j < arr.length; j++) {
if (arr[i] < arr[j]) {
let temp = arr[i]; // store original value for swapping
arr[i] = arr[j]; // set original value position to greater value
arr[j] = temp; // set greater value position to original value
};
};
};
return arr;
};
console.log(sortGreatest([10,9,1000,12,-11,3]));
// => [ 1000, 12, 10, 9, 3, -11 ]
function sortLeast(arr) {
// manually sort array from smallest to largest:
// loop through array backwards:
for (let i = arr.length-1; i >= 0; i--) {
// loop again through the array, moving backwards:
for (let j = i; j >= 0; j--) {
if (arr[i] < arr[j]) {
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
};
};
};
return arr;
};
console.log(sortLeast([10,9,1000,12,-11,3]));
// => [ -11, 3, 9, 10, 12, 1000 ]
答案 5 :(得分:0)
这是A到B
function smallTobig(numbers) {
let A_B = []
for(let i = 0; i < numbers.length; i++) {
for(let j = i; j < numbers.length; j++) {
if (numbers[i] > numbers[j]) {
let temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
}
A_B.push(numbers[i])
}
return A_B
}
console.log(smallTobig([5, 2, 1, 4]));
console.log(smallTobig([999, 5, 0, 1, 4, 998]));
console.log(smallTobig([15, 32, 11, 14]));
console.log(smallTobig([5, 4, 3, 2, 1, 0]));
console.log(smallTobig([123, 321, 143, 313]));
此从B到A
function bigTosmall(numbers) {
let B_A = []
for(let i = 0; i < numbers.length; i++) {
for(let j = i; j < numbers.length; j++) {
if (numbers[i] < numbers[j]) {
let temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
}
B_A.push(numbers[i])
}
return B_A
}
console.log(bigTosmall([5, 2, 1, 4]));
console.log(bigTosmall([999, 5, 0, 1, 4, 998]));
console.log(bigTosmall([15, 32, 11, 14]));
console.log(bigTosmall([5, 4, 3, 2, 1, 0]));
console.log(bigTosmall([123, 321, 143, 313]));