經典排序算法三 選擇排序(JAVA實現)

2021-01-18 網際網路編程思想

選擇排序原理:每一趟從待排序的記錄中選出最小的元素,順序放在已排好序的序列最後,直到全部記錄排序完畢。也就是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。基於此思想的算法主要有簡單選擇排序、樹型選擇排序和堆排序。

舉例說明:{2,3,0,9,12,7,1}

第一次從頭遍歷尋找最小的記錄為0,則將0和第一位進行交換。

結果:0, 3, 2, 9, 12, 7, 1

第二次 從第二位遍歷尋找最小的記錄為1,則將1和第二位3進行交換

結果:0, 1, 2, 9, 12, 7, 3

依次類推,結果:0, 1, 2, 3, 7, 9, 12。

為了方便大家理解,我畫了一個原理圖如下。

選擇排序原理圖

大家看完原理圖一定都理解了選擇排序,下方為選擇排序的代碼,大家在自己的ide中練習一次加深記憶。

選擇排序代碼

大家還有什麼不懂的歡迎評論區留言哦~我們下期再見

下面貼上前兩期排序的文章,便於大家複習:

經典排序算法二 快速排序(JAVA實現)經典排序算法一 冒泡排序(JAVA實現)

相關焦點

  • 輕鬆搞定,Java選擇排序算法
    前言不知不覺,今年已經大半年 時間就過去了,很多公司秋招已經開始了,然後數據結構 與算法就是公司常拿來考察同學們的基礎,今天我們一起來學習Java中最簡單的算法,叫選擇排序算法。正文選擇排序算法,是一種簡單直觀的排序算法,它的思路是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。但是注意選擇排序它是不穩定的排序方法的。
  • 算法的入門丨最基礎的排序算法,選擇、冒泡、插入
    大家在學習java的過程中一定都會接觸到排序算法,而且排序算法是編程學習的過程中最先接觸的算法。今天給大家帶來算法的一次回憶,排序算法入門的三種基礎算法——選擇排序、冒牌排序和插入排序。選擇排序選擇排序,弟中弟,最沒用的算法,時間複雜度非常之高,所以說這個算法是最沒用的算法。但是這個算法是給編程學習者帶來思路的,用來做算法入門的墊腳石是非常不錯的。排序算法的思路:過濾整個數組,將最小的數換到第一位,重複該過程,直到遍歷數組,結束程序。首先,寫一個循環遍歷數組並將數組中元素列印出來的方法。命名為print( ); 方法。
  • 詳解JAVA數據結構與算法:排序算法
    排序算法排序也稱排序算法(Sort Algorithm),排序是將一組數據,依指定的順序進行排列的過程。排序的分類:1) 內部排序:指將需要處理的所有數據都加載到內部存儲器中進行排序。2) 外部排序法:數據量過大,無法全部加載到內存中,需要藉助外部存儲進行排序。
  • 選擇排序算法的通俗講解
    1 算法簡介選擇排序的思想就是在未排序序列中以此選取出目標元素按順序放置,形成有序序列。2 算法描述現有待排序列24、69、80、57、13,使用選擇排序方法進行升序排序。在這個序列中,13已經歸位,69、80、57、24是帶排序序列,如下圖所示:2> 然後處理69、80、57、24,在其中選出最小值24,與首個元素69交換,形成13、24、80、57、69序列,其中13、24是已歸位序列,80、57、69是待排序序列,如下圖所示:3> 按上述思想處理待排序序列,直到待排序序列的元素全部處理完後,整個選擇排序算法結束。
  • 選擇排序算法解析
    1 選擇排序法的定義選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是:第一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,然後再從剩餘的未排序元素中尋找到最小(大)元素,然後放到已排序的序列的末尾。以此類推,直到全部待排序的數據元素的個數為零。
  • 基礎不牢地動山搖記住 Java 面試中常用的八種排序算法與代碼實現
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫1.直接插入排序經常碰到這樣一類排序問題:把新的數據插入到已經排好的數據列中。
  • Python中的快速排序算法,快速排序的優缺點,中級python技術點
    選擇主元為什麼上面的實現會隨機選擇主元素?一致地選擇輸入列表的第一個或最後一個元素不是同樣的嗎?由於快速排序算法的工作方式,遞歸層的數量取決於主元在每個分區中的位置。在最佳情況下,算法始終選擇中位數元素作為軸心。
  • 讓程式設計師抓狂的排序算法舞蹈教學
    排序算法:選擇排序法選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。選擇排序的主要優點與數據移動有關。
  • 你所知道的十大排序算法的總結(冒泡,選擇,插入,希爾,歸併,快排,堆...
    一、前言傳統的計算機算法和數據結構領域,都是基於java或者c/c++等。沒用javascript實現過或是沒仔細看過相關算法的原理,導致寫起來浪費很多時間。對於一個前端來說,尤其是筆試面試的時候,算法方面考的其實不難(十大排序算法或是和十大排序算法同等難度的)。
  • 手敲一遍數據結構和排序算法
    排序算法 性質記憶 冒泡排序 選擇排序 插入排序 快速排序 歸併排序 希爾排序 堆排序數據結構 數組 堆 棧 隊列 鍊表 二叉樹 二叉搜索樹 圖 哈希表搜索 廣度優先搜索 深度優先搜索附件 排序算法代碼點擊
  • python實踐分享:關於排序算法,怎麼選擇sort()或者sorted()?
    各種排序算法以及它們的時間複雜度分析是很多企業面試人員在面試時候經常會問到的問題,這也不難理解,在實際的應用過程中確實會遇到各種需要排序的情況,如按照字母表輸出一個序列、對記錄的多個欄位排序等。還好,Python中的排序相對簡單,常用的函數有 sort()和sorted()兩種。這兩種函數並不完全相同,各有各的用武之地。
  • MySQL自定義排序
    今天接到一個需求,客戶要求把系統用戶列表按照某個用戶角色排序
  • 數據結構與算法:排序算法之快速排序「詳細步驟圖解」
    快速排序給定一個序列:22 33 49 47 33' 12 68 29進行快速排序主要思想從序列中,任選一個記錄k作為軸值pivot選擇策略:第一個元素最後一個元素中間元素隨機選擇將剩餘的元素,分割成 左子序列 L 和 右子序列
  • 一篇文章讓你真正了解快速排序
    1.2 算法沒有規定空間複雜度,並且極端情況下的算法問題是通病另外,快排在維基(中文|英文)的定義上只規定了時間複雜度,對於空間複雜度的定義是,中文:根據實現的方式不同而不同英文:O(n) auxiliary
  • java集合詳解合集
    從傳統意義上講,數組是我們的一個很好的選擇,前提是我們事先已經明確知道我們將要保存的對象的數量。一旦在數組初始化時指定了這個數組長度,這個數組長度就是不可變的,如果我們需要保存一個可以動態增長的數據(在編譯時無法確定具體的數量),java的集合類就是一個很好的設計方案了。集合類主要負責保存、盛裝其他數據,因此集合類也被稱為容器類。
  • excel排序技巧:排序功能應用匯總
    2、筆畫排序在某些時候,你的領導可能會要求按照姓氏的筆畫進行排序,這個在excel表格裡也非常容易實現。選中表格中任意單元格,點擊「數據」-「排序」。在彈出的對話框中選擇「選項」。在對話框中勾選「筆畫排序」即可。如果想按照指定列的文字筆畫排序,可以在關鍵字的下拉菜單中選中對應列標題即可。
  • C語言,誰都能看得懂的歸併排序
    喜歡看排序算法動態效果的,可以看看這個網站https
  • 14.知其然知其所以然,逐行代碼詳解Python實現選擇排序
    在百度搜索「選擇排序」,有1630萬個結果。可見網上已經有非常多的教程介紹選擇排序的原理和實現。不過這些教程都側重於介紹選擇排序的原理。有些還製作了生動的gif動畫來模擬整個過程。如下的動畫就轉自百度搜索裡排在第2位的「菜鳥教程」,由於公眾號對gif動畫有15秒的限制,下面的動畫並不完整,如需觀看完整動畫,可以去原網站。
  • 一文搞懂Go語言中的切片排序
    在各種排序算法都已經成熟的今天,我們完全可以針對特定元素類型的切片手寫排序函數/方法,但多數情況下不推薦這麼做,因為Go標準庫內置了sort包可以很好地幫助我們實現原生類型元素切片以及自定義類型元素切片的排序任務。
  • Excel中如何實現按照自定義序列排序
    Excel中常見的排序方式有按照數據升序、降序和顏色排序,但工作中有時候需要按照英文日期、學歷、部門、職稱、天幹地支、領導關心的數據優先級等許多自己定義的序列排序。如何實現按照自己的心願隨意排序呢?本文以下表為例,詳細介紹如何按照學歷來排序,按照其他序列排序的方法也類似。