日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

排序算法系列:选择排序算法

發布時間:2025/3/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 排序算法系列:选择排序算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

這是一個相對簡單的排序算法。為什么這么說呢?因為不需要什么思考,你就可以掌握并使用它。


版權說明

著作權歸作者所有。
商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
本文作者:Q-WHai
發表日期: 2016年5月24日
本文鏈接:https://qwhai.blog.csdn.net/article/details/51491810
來源:CSDN
更多內容:分類 >> 算法與數學


目錄

文章目錄

  • 概述
  • 版權說明
  • 目錄
    • @[toc]
  • 算法原理
  • 算法步驟
  • 算法實現
  • 算法復雜度
  • Ref
  • Github源碼下載
  • 征集

算法原理

選擇排序算法也需要將一個完整的序列切分成兩個部分,一個部分有序,一個部分無序。這一點它和插入排序是一致的。在前面我們說插入排序是將第 [i + 1] 個元素插入到第一部分的有序序列中,如果你還有印象的話。那么在選擇排序中則是第 j 個元素(i < j <= n),插入到第 i 個位置。
下面這幅圖可以幫助你更好地理解這一點(當然你可以完全不需要圖解的幫助)。


算法步驟

  • 序列會被人為抽象地分成兩個部分,分別定義成序列 T1 和序列 T2(原始序列為 T0)。
  • 默認 T1 序列中的第 0 個元素是有序的(因為只有一個元素 a[0] 嘛,自然是有序的);
  • 從 i = 0 開始,每次從 T2 中選出一個最小的元素 a[minIndex],將 a[minIndex] 與 a[i] 進行交換;
  • 重復過程 3,直到序列 T2 中的元素全部被填入到序列 T1

  • 算法實現

    /** 排序算法的核心模塊* * @param array* 待排序數組*/private void sortCore(int[] array) {int arraySize = array.length;for (int i = 0; i < arraySize; i++) {int minValue = Integer.MAX_VALUE;int minIndex = 0;for (int j = i; j < arraySize; j++) {if (minValue > array[j]) {minValue = array[j];minIndex = j;}}ArrayUtils.swap(array, minIndex, i);}}

    算法復雜度

    排序方法時間復雜度空間復雜度穩定性復雜性
    平均情況最壞情況最好情況
    選擇排序O($n^{2}$)O($n^{2}$)O($n^{2}$)O(n)穩定簡單

    Ref

    • 《大話數據結構》

    Github源碼下載

    • https://github.com/qwhai/algorithms-sort

    征集

    如果你也需要使用ProcessOn這款在線繪圖工具,可以使用如下邀請鏈接進行注冊:
    https://www.processon.com/i/56205c2ee4b0f6ed10838a6d

    總結

    以上是生活随笔為你收集整理的排序算法系列:选择排序算法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。