Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptクイックソート再帰


数値の配列を受け取るJavaScript関数を作成する必要があります。この関数は、クイックソートのアルゴリズムを適用して、配列を昇順または降順で並べ替える必要があります。

クイックソートアルゴリズム

クイックソートは以下の手順に従います-

ステップ1 −任意の要素をピボットとして作成します(できれば最初または最後ですが、任意の要素をピボットにすることができます)

ステップ2 −ピボットに基づいてアレイを分割します

ステップ3 −左側のパーティションにクイックソートを再帰的に適用します

ステップ4 −適切なパーティションにクイックソートを再帰的に適用します

QuickSortの平均およびベストケースの時間計算量はO(nlogn)ですが、最悪の場合、O(n ^ 2)まで遅くなる可能性があります。

このためのコードは-

になります
const arr = [5,3,7,6,2,9];
const swap = (arr, leftIndex, rightIndex) => {
   let temp = arr[leftIndex];
   arr[leftIndex] = arr[rightIndex];
   arr[rightIndex] = temp;
};
const partition = (arr, left, right) => {
   let pivot = arr[Math.floor((right + left) / 2)];
   let i = left;
   let j = right;
   while (i <= j) {
      while (arr[i] < pivot) {
         i++;
      };
      while (arr[j] > pivot) {
         j--;
      };
      if (i <= j) {
         swap(arr, i, j); //sawpping two elements
         i++;
         j--;
      };
   };
   return i;
}
const quickSort = (arr, left = 0, right = arr.length - 1) => {
   let index;
   if (arr.length > 1) {
      index = partition(arr, left, right);
      if (left < index - 1) {
         quickSort(arr, left, index - 1);
      };
      if (index < right) {
         quickSort(arr, index, right);
      };
   }
   return arr;
}
let sortedArray = quickSort(arr);
console.log(sortedArray);

出力

そして、コンソールの出力は-

になります
[ 2, 3, 5, 6, 7, 9 ]

  1. Javascriptで配列を空にする方法

    JavaScriptで配列をクリア/空にする方法は複数あります。コンテキストに基づいてそれらを使用する必要があります。それぞれを見てみましょう。 -として定義された配列があると仮定します let arr = [1, 'test', {}, 123.43]; 新しい配列に置き換える- arr = []; これが最速の方法です。これにより、arrが新しい配列に設定されます。これは、他の場所から元のarrへの参照がない場合に最適です。そうした場合、それらの参照は更新されず、それらの場所は引き続き古い配列を使用します。 長さプロップを0に設定- arr.length = 0 これに

  2. JavaScriptの基本的な配列メソッド

    いくつかの基本的なJavaScript配列メソッドは次のとおりです- メソッド 説明 Array.push() 配列の最後に要素を追加します。 Array.pop() 配列の最後から要素を削除します。 Array.unshift() 配列の先頭に要素を追加するには Array.shift() 配列の前面から要素を削除します。 Array.splice() スプライスに要素を追加または削除するには 以下は、基本的な配列メソッドのコードです- 例 <!DOCTYPE html> <html lang="en