色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 數(shù)字?jǐn)?shù)組排序

在JavaScript中,數(shù)字?jǐn)?shù)組排序是一項(xiàng)常規(guī)任務(wù)。當(dāng)需要從數(shù)字?jǐn)?shù)組中找到最大值,或按照升序或降序排列時(shí),會(huì)用到排序。JavaScript提供了多種排序算法,包括冒泡排序、選擇排序、插入排序、快速排序、歸并排序等。下面我們將簡(jiǎn)單介紹其中的幾種排序算法。

冒泡排序算法是一種簡(jiǎn)單的排序算法,其基本思路是多次重復(fù)遍歷待排序的數(shù)列,比較相鄰兩個(gè)數(shù)的大小,若大小不符合規(guī)定,則交換這兩個(gè)數(shù)的位置。以升序排序?yàn)槔?/p>

function bubbleSort(arr) {
var len = arr.length;
for (var i = 0; i< len - 1; i++) {
for (var j = 0; j< len - i - 1; j++) {
if (arr[j] >arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
var arr = [3, 7, 1, 9, 6, 2];
console.log(bubbleSort(arr)); // [1, 2, 3, 6, 7, 9]

選擇排序算法中,對(duì)于長(zhǎng)度為N的數(shù)列,第一輪從第一個(gè)數(shù)到第N個(gè)數(shù)中選出最小的數(shù),與第一個(gè)數(shù)交換位置;第二輪從第二個(gè)數(shù)到第N個(gè)數(shù)中選出最小的數(shù),與第二個(gè)數(shù)交換位置;以此類(lèi)推,共進(jìn)行N-1輪,最終得到升序排列的數(shù)列。

function selectionSort(arr) {
var len = arr.length;
for (var i = 0; i< len - 1; i++) {
var minIndex = i;
for (var j = i + 1; j< len; j++) {
if (arr[j]< arr[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
var temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
return arr;
}
var arr = [3, 7, 1, 9, 6, 2];
console.log(selectionSort(arr)); // [1, 2, 3, 6, 7, 9]

插入排序算法的基本思想是將一組數(shù)據(jù)分為有序區(qū)和無(wú)序區(qū),在無(wú)序區(qū)取出一個(gè)數(shù)據(jù)插入到有序區(qū)的合適位置,長(zhǎng)度為N的數(shù)列共需要進(jìn)行N-1輪插入操作。

function insertionSort(arr) {
var len = arr.length;
for (var i = 1; i< len; i++) {
var j = i;
while (j >0 && arr[j]< arr[j - 1]) {
var temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
j--;
}
}
return arr;
}
var arr = [3, 7, 1, 9, 6, 2];
console.log(insertionSort(arr)); // [1, 2, 3, 6, 7, 9]

快速排序算法是一種常用的排序算法,基本思想是通過(guò)一趟排序?qū)⒋庞涗浄指畛瑟?dú)立的兩部分,其中一部分記錄的關(guān)鍵字均比另一部分的關(guān)鍵字小,然后繼續(xù)對(duì)兩部分記錄進(jìn)行排序,以達(dá)到整個(gè)序列有序的目的。

function quickSort(arr) {
if (arr.length<= 1) {
return arr;
}
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var i = 0; i< arr.length; i++) {
if (arr[i]< pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
}
var arr = [3, 7, 1, 9, 6, 2];
console.log(quickSort(arr)); // [1, 2, 3, 6, 7, 9]

歸并排序算法是一種分治算法,將原始數(shù)組分成較小數(shù)組,然后遞歸地排序每個(gè)較小的數(shù)組,并將這些數(shù)組合并為較大的數(shù)組,直到整個(gè)數(shù)組排序完成。

function mergeSort(arr) {
if (arr.length<= 1) {
return arr;
}
var mid = Math.floor(arr.length / 2);
var left = arr.slice(0, mid);
var right = arr.slice(mid);
return merge(mergeSort(left), mergeSort(right));
}
function merge(left, right) {
var result = [];
while (left.length && right.length) {
if (left[0]< right[0]) {
result.push(left.shift());
} else {
result.push(right.shift());
}
}
while (left.length) {
result.push(left.shift());
}
while (right.length) {
result.push(right.shift());
}
return result;
}
var arr = [3, 7, 1, 9, 6, 2];
console.log(mergeSort(arr)); // [1, 2, 3, 6, 7, 9]

以上便是JavaScript中常用的幾種排序算法,在實(shí)際開(kāi)發(fā)過(guò)程中可以結(jié)合具體場(chǎng)景選擇合適的排序算法,提高代碼效率。