亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TypeScript選擇排序如何實現

發布時間:2023-02-23 16:19:15 來源:億速云 閱讀:132 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“TypeScript選擇排序如何實現”,內容詳細,步驟清晰,細節處理妥當,希望這篇“TypeScript選擇排序如何實現”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

一. 選擇排序的定義

選擇排序(Selection Sort)是一種簡單的排序算法。

它的基本思想是:

  • 首先在未排序的數列中找到最小(大)元素,然后將其存放到數列的起始位置;

  • 接著,再從剩余未排序的元素中繼續尋找最小(大)元素,然后放到已排序序列的末尾。

  • 以此類推,直到所有元素均排序完畢。

選擇排序的主要優點與數據移動有關。

  • 如果某個元素位于正確的最終位置,則它不會被移動。

  • 選擇排序每次交換一對元素,它們當中至少有一個將被移到其最終位置上,因此對n個元素的表進行排序總共進行至多n-1次交換。

  • 在所有的完全依靠交換去移動元素的排序方法中,選擇排序屬于非常好的一種。

選擇排序的實現方式很簡單,并且容易理解,因此它是學習排序算法的很好的入門途徑。

二. 選擇排序的流程

選擇排序流程詳細步驟:

  • 首先將要排序的數組復制到一個新數組中,這樣原數組不會被改變。

  • 初始化最小數字的索引值為0,然后在數組中循環,在當前索引后面的元素中找到最小的數字的索引。

  • 如果當前索引位置的數字不是最小數字,那么將這兩個數字互換。

  • 繼續尋找下一個數字,直到索引到最后一個元素,此時整個數組已經是從小到大排序的了。

  • 重復上面的步驟,每次排序的范圍都會減少一個,直到整個數組排序完畢。

三. 選擇排序的圖解

TypeScript選擇排序如何實現

TypeScript選擇排序如何實現

四. 選擇排序的代碼

以下是 TypeScript 實現的選擇排序代碼:

function selectionSort(arr: number[]): number[] {
  // 循環遍歷整個數組
  for (let i = 0; i < arr.length; i++) {
    // 預設最小數的索引為當前循環的索引
    let minIndex = i;
    // 在后面的數中尋找更小的數
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[j] < arr[minIndex]) {
        // 如果找到更小的數,記錄它的索引
        minIndex = j;
      }
    }
    // 如果當前循環的索引不是最小數的索引,交換它們
    if (i !== minIndex) {
      [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
    }
  }
  // 返回排序后的數組
  return arr;
}

// 測試數據
const testArr = [5, 2, 9, 1, 5, 6];
// 調用插入排序函數
const sortedArr = selectionSort(testArr);
// 打印結果
console.log(sortedArr);

以下是代碼的詳細說明:

  • 首先循環遍歷整個數組。

  • 在每一次循環中,預設最小數的索引為當前循環的索引。

  • 在后面的數中尋找更小的數,如果找到更小的數,記錄它的索引。

  • 如果當前循環的索引不是最小數的索引,交換它們。

  • 重復步驟2-4,直到遍歷完整個數組。

  • 返回排序后的數組。

五. 選擇排序的時間復雜度

計算選擇排序算法的時間復雜度,通常是通過分析算法中每一步的執行次數來確定的。

我們分析選擇排序中的每一步,再將每一步的時間復雜度加起來,最后得到的就是選擇排序的時間復雜度。

在選擇排序中,最多的操作是內層循環,其執行了N-1次,并且每次執行內層循環都要花費O(N)的時間。

  • 因此,內層循環的時間復雜度是O(N^2)。

外層循環也要執行N-1次,因此,它的時間復雜度也是O(N^2)。

  • 所以,整個選擇排序算法的時間復雜度是O(N^2)。

讀到這里,這篇“TypeScript選擇排序如何實現”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海盐县| 三门县| 牙克石市| 溧阳市| 沛县| 定西市| 长子县| 中宁县| 资讯| 渭南市| 肥东县| 嘉黎县| 无锡市| 枣庄市| 桂林市| 垣曲县| 鄂托克旗| 井研县| 麻江县| 江口县| 武山县| 龙南县| 金湖县| 双城市| 静乐县| 彰化县| 亚东县| 儋州市| 崇义县| 沙湾县| 安化县| 巴林右旗| 弥勒县| 如皋市| 彭阳县| 潍坊市| 同心县| 铜山县| 怀化市| 谢通门县| 乐东|