ソートアルゴリズム

5818 ワード

クイックソート

  • の中心軸、
  • を決定
  • は、中心軸の前面に位置する、後方の位置は
  • である.
  • 再帰、前後各
  • 繰り返し
  • の前後の長さが1(サイズが分離できないまで)になるまで繰り返し、ソート->終了条件
  • を完了します.
    const quickSort = function (arr, callback = (n) => n) {
      // 이 부분이 재귀 종료 조건(탈출 조건)
      if (arr.length <= 1) { return arr; }
      
      // 기준점은 [0] 또는 (arr.length-1) 또는 (arr.length/2)
      let mid = arr[0]; // 기준점을 잡음
      let front = [];
      let rear = [];
      
      // 기준점을 [0]으로 잡았으므로, 1번부터 시작
      for (let i = 1; i < arr.length; i++) {
        if (callback(arr[i]) >= callback(mid)) {
          rear.push(arr[i]);
        } else {
          front.push(arr[i]);
        }
      }
      
      // 재귀로 front와 rear를 돌려준다
      const frontSort = quickSort(front, callback);
      const rearSort = quickSort(rear, callback);
      
      // 재귀로 돌린 결과를 합쳐서 리턴한다
      return [...frontSort, mid, ...rearSort];
    }

    連結ソート(連結ソート、連結ソート)


  • 分割
  • 合併
  • カウントソート


    リンクテキスト

    ベースソート


    リンクテキスト
  • は、各ビット数をソートする際にカウントソート
  • を用いる.