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

2020-12-14 網際網路編程思想

選擇排序原理:每一趟從待排序的記錄中選出最小的元素,順序放在已排好序的序列最後,直到全部記錄排序完畢。也就是:每一趟在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實現冒泡排序算法
    #理由一:面試的時候,千萬不要被數據結構與算法拖了後腿#理由二: 你真的願意做一輩子CRUD Boy嗎#理由三: 不想寫出開源框架,中間件的工程師,不是好廚子1.2.如何系統化學習數據結構與算法?我想好了,還是需要學習數據結構與算法。但是我有兩個困惑:1.如何著手學習呢?2.有哪些內容要學習呢?
  • SelectionSort 選擇排序算法詳解(java 實現)
    選擇排序選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。選擇排序的主要優點與數據移動有關。
  • 排序算法:選擇排序
    在日常開發中經常會遇到一類問題,就是對一個集合的數據進行排序掌握一些排序算法,對於日常開發是非常有幫助的今天介紹一下選擇排序法01算法邏輯02時間複雜度由上圖邏輯可以得出,選擇排序的循環次數為由循環次數可以得出,選擇排序的時間複雜度為03空間複雜度由上圖邏輯可以得出
  • 經典排序算法一 冒泡排序(JAVA實現)
    冒泡排序原理:相鄰的兩個元素進行比較,將值大的元素移動到右端。冒泡排序實現思路:遍歷要排序的元素,依次比較相鄰的兩個元素,值大的移動到右端,則第二次就可以忽略第一次遍歷放在最右端的元素,依次類推直到遍歷到n-1次只剩下2個元素進行比較,冒泡排序結束。
  • Java中常見的排序算法有哪些?---冒泡排序
    排序相關的的基本概念排序: 將一組雜亂無章的數據按一定的規律順次排列起來。數據表( data list): 它是待排序數據對象的有限集合。排序碼(key):通常數據對象有多個屬性域,即多個數據成員組成,其中有一個屬性域可用來區分對象,作為排序依據。該域即為排序碼。
  • Python實現八大經典排序算法
    一、前言在面試題中可能會遇到排序算法,畢竟作為程式設計師內功心法,熟練掌握排序算法是很重要的,本文總結了八大經典排序算法的 Python 實現。排序算法是《數據結構與算法》中最基本的算法之一。排序算法可以分為內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸併排序、快速排序、堆排序、基數排序等。
  • 排序算法---基數排序,動圖詳解,Java實現!
    「代碼實現:」定義桶(二維數組):int[][] bucket = new int[10][arr.length];除了桶這個需要額外空間之外最後arr數組就會按照升序排序結束。在此只展示代碼不同的地方,其餘地方完全一樣。//算法:取出十位的數字int digitOfElement = arr[j] / 10 % 10;
  • 十大經典排序算法最強總結(含JAVA代碼實現)
    所以我根據這幾天看的文章,整理了一個較為完整的排序算法總結,本文中的所有算法均有JAVA實現,經本人調試無誤後才發出,如有錯誤,請各位前輩指出。0、排序算法說明0.1 排序的定義對一序列對象根據某個關鍵字進行排序。
  • 排序算法:歸併排序
    在日常開發中經常會遇到一類問題,就是對一個集合的數據進行排序掌握一些排序算法,對於日常開發是非常有幫助今天介紹一下歸併排序法01算法邏輯02時間複雜度由上圖邏輯可以得出,歸併排序的循環次數為由算法導論的主定理可以推導出,可見之前的文章(文末有連結)歸併排序的時間複雜度為03空間複雜度由上圖邏輯可以得出,歸併排序每次分解都是要復一份新的數據片段
  • 一文圖解 Java 源碼的插入排序算法
    (一)》講了什麼是選擇問題,什麼是比較能力。選擇問題,是假設一組 N 個數,要確定其中第 K 個最大值者。算法是為求解一個問題。那什麼是算法?算法是某種集合,是簡單指令的集合,是被指定的簡單指令集合。確定該算法重要的指標:第一是否能解決問題;第二算法運行時間,即解決問題出結果需要多少時間;還有所需的空間資源,比如內存等。很多時候,寫一個工作程序並不夠。
  • 排序算法:快速排序
    在日常開發中經常會遇到一類問題,就是對一個集合的數據進行排序掌握一些排序算法,對於日常開發是非常有幫助今天介紹一下快速排序法01算法邏輯02時間複雜度由上圖邏輯可以得出,參照遞歸表達式漸進複雜度分析快速排序的時間複雜度遞歸表達式為,其中a=2,b=2,d=1由算法導論的主定理可以推導出,快速排序的時間複雜度為03空間複雜度由上圖邏輯可以得出
  • JavaScript實現排序算法
    如4N^2^,大O表示法表示為:O(N^2^);二、排序算法這裡主要介紹幾種簡單排序和高級排序:簡單排序:冒泡排序、選擇排序、插入排序;高級排序:希爾排序、快速排序;此處創建一個列表類ArrayList並添加一些屬性和方法,用於存放這些排序方法:1.冒泡排序冒泡排序的思路:對未排序的各元素從頭到尾依次比較相鄰的兩個元素大小關係;如果左邊的人員高
  • JS家的排序算法 十大經典算法排序總結
    ✦ ✦ ✦十大經典算法排序總結對比一張圖概括:(Selection Sort)選擇排序須知:在時間複雜度上表現最穩定的排序算法之一,因為無論什麼數據進去都是O(n²)的時間複雜度。。。(Insertion Sort)插入排序須知:插入排序的代碼實現雖然沒有冒泡排序和選擇排序那麼簡單粗暴,但它的原理應該是最容易理解的了,因為只要打過撲克牌的人都應該能夠秒懂。
  • 經典排序算法和Python詳解之(一)選擇排序和二元選擇排序
    本文源自微信公眾號【Python編程和深度學習】原文連結:經典排序算法和Python詳解之(一)選擇排序和二元選擇排序,歡迎掃碼關注鴨!掃它!掃它!掃它排序算法是《數據結構與算法》中最基本的算法之一。排序就是對於一個列表,按照某關鍵字遞增或遞減的順序進行操作。
  • 輕鬆搞定,Java選擇排序算法
    前言不知不覺,今年已經大半年 時間就過去了,很多公司秋招已經開始了,然後數據結構 與算法就是公司常拿來考察同學們的基礎,今天我們一起來學習Java中最簡單的算法,叫選擇排序算法。正文選擇排序算法,是一種簡單直觀的排序算法,它的思路是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。但是注意選擇排序它是不穩定的排序方法的。
  • 十大經典排序算法之希爾排序算法
    希爾排序之前我們講過冒泡排序、選擇排序、插入排序,它們的時間複雜度都是 主要思想希爾排序的思想簡單點說就是有跨度的插入排序,這個跨度會逐漸變小,直到變為 1,變為 1 的時候也就是我們之前講的簡單插入排序了。規範點的描述就是,選擇一組遞減的整數作為增量序列,最小的增量必須為 1。
  • 八大經典排序算法詳解
    我把最經典的八大排序算法原理和代碼也都整理出來了,內容如下,希望對大家能有所幫助。插入排序•基本思想:每步將一個待排序的紀錄,按其關鍵碼值的大小插入前面已經排序的文件中適當位置上,直到全部插入完為止。•算法適用於少量數據的排序,時間複雜度為O(n^2)。是穩定的排序方法。
  • Java 快速排序算法
    簡介上一章我們學習了 [Java 希爾排序算法],這一章,我們來學習快速排序算法
  • 排序算法之插入排序
    排序算法在編程領域中起著舉足輕重的作用,在目標檢索、機器學習、數值計算、圖像處理等領域有著廣泛地應用。為了追本溯源,公眾號特推出常用經典排序算法系列推文,讓小夥伴們深入了解排序算法的實現原理,同時也提升matlab編程能力。
  • 插入排序算法,就這麼簡單
    排序問題,是古老,但一直流行的問題。從 ACM 接觸到現在工作,每次涉及算法,或品讀 JDK 源碼中一些算法,經常會有排序的算法出現。排序算法是為了將一組數組(或序列)重新排列,排列後數據符合從大到小(或從小到大)的次序。這樣數據從無序到有序,會有什麼好處?通過維基百科查閱資料得到:在主內存中完成的排序叫做,內部排序。那需要在磁碟等其他存儲完成的排序,叫做外部排序 external sorting。