JavaScript 如何对数字数组进行排序

JavaScript 如何对数字数组进行排序

JavaScript的Array.sort()方法用于原地排序数组元素并返回排序后的数组。这个方法将元素按字符串格式排序。对于字符串数组来说,这个方法可以很好地工作,但对于数字来说却不行。例如,如果数字按字符串排序,那么”75″将大于”200″。

示例: 在这个示例中,实现了Array sort()方法的使用。数组按字符串排序。

let arr = [12, 25, 31, 23, 75, 81, 100]
console.log(arr.sort())

输出:

// code shows this output  
Wrong Output   : [100, 12, 23, 25, 31, 75, 81]   
// Correct Output  
Correct Output : [12, 23, 25, 31, 75, 81, 100]  

示例: 该示例将数组元素按照字符串格式进行排序。

// Declare and initialize original array
let marks = [12, 25, 31, 23, 75, 81, 100];
 
// Print Before Sorting Array 
console.log("Original Array");
console.log(marks);
 
// Call sort function
marks.sort();
 
console.log("After Sorting in Ascending Order");
 
// Print Sorted Numeric Array 
console.log(marks);

输出:

Original Array  
12,25,31,23,75,81,100  
After Sorting in Ascending Order  
100,12,23,25,31,75,81  

然后,如何对数字数组元素进行排序? 有两种方法可以按升序对数字数组进行排序。

  • 使用比较函数
  • 通过创建循环

方法1:使用比较函数

我们可以创建一个比较函数,该函数返回负值、零或正值。

语法:

function(a, b){return a - b}  
  • 负值(a < b) => a将在b之前放置
  • 零值(a == b) =>无更改
  • 正值(a > b) => a将在b之后放置

示例: 这个示例使用比较函数按升序对数组元素进行排序。

// Declare and initialize an Array
let marks = [12, 25, 31, 23, 75, 81, 100];
 
// Print Before sorting array 
console.log("Original Array");
console.log(marks);
 
// Sort elements using compare method 
marks.sort(function (a, b) { return a - b });
 
console.log("After sorting in Ascending order");
 
// Print sorted Numeric array 
console.log(marks);

输出

Original Array
[
  12, 25,  31, 23,
  75, 81, 100
]
After sorting in Ascending order
[
  12, 23,  25, 31,
  75, 81, 100
]

现在,我们想要按降序对数组进行排序,这样我们就需要改变比较函数。

语法:

function(a, b){return b - a}  
  • 负值( b < a) => a在 b 之后
  • 零值(a == b) =>无变化
  • 正值(b > a ) => a在 b 之前

示例: 这个示例使用比较函数将数组元素按降序排序。

// Declare and initialize an Array
let marks = [12, 25, 31, 23, 75, 81, 100];
 
// Print Before sorting array 
console.log("Original Array");
console.log(marks);
 
// Sort elements using compare method 
marks.sort(function (a, b) { return b - a });
 
console.log("After sorting in Ascending order");
 
// Print sorted Numeric array 
console.log(marks);

输出

Original Array
[
  12, 25,  31, 23,
  75, 81, 100
]
After sorting in Ascending order
[
  100, 81, 75, 31,
   25, 23, 12
]

方法2:使用循环进行排序

我们也可以使用循环来对数组元素进行排序。在这里,我们将使用冒泡排序(一种简单的排序技术)以升序对数组元素进行排序。

示例:

// Sorting function
function Numeric_sort(ar) {
    let i = 0, j;
    while (i < ar.length) {
        j = i + 1;
        while (j < ar.length) {
 
            if (ar[j] < ar[i]) {
                let temp = ar[i];
                ar[i] = ar[j];
                ar[j] = temp;
            }
            j++;
        }
        i++;
    }
}
 
// Original Array
let arr = [1, 15, 10, 45, 27, 100];
 
// Print Before sorting array 
console.log("Original Array");
console.log(arr);
 
// Function call 
Numeric_sort(arr);
 
console.log("Sorted Array");
 
// Print sorted Numeric array 
console.log(arr);

输出:

Original Array  
1,15,10,45,27,100  
Sorted Array  
1,10,15,27,45,100  

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程