輕鬆搞定,Java選擇排序算法

2020-12-17 願編程是詩

前言

不知不覺,今年已經大半年 時間就過去了,很多公司秋招已經開始了,然後數據結構 與算法就是公司常拿來考察同學們的基礎,今天我們一起來學習Java中最簡單的算法,叫選擇排序算法。

正文

選擇排序算法,是一種簡單直觀的排序算法,它的思路是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。但是注意選擇排序它是不穩定的排序方法的。

代碼演示

public class SelectionSort4 {public static void sort(int[] arr){ for (int i = 0; i < arr.length; i++){ int minIndex = i; int min = arr[i]; for (int j = i+1; j < arr.length; j++){ if (min < arr[j]){ min = arr[j]; minIndex = j; } } if (minIndex != i){ arr[minIndex] = arr[i]; arr[i] = min; } } public static void main(String[] args) { int[] arr = {9,8,7,6,3,4,5}; sort(arr); System.out.println(Arrays.toString(arr));}

時間複雜度

選擇排序的時間複雜度為 O(n^2),第一次需要檢查n個元素,隨後檢查的元素數依次為n - 1, n – 2, …, 2和1。所以說平均每次檢查的元素數為1/2 * n, 所以運行時間也就是為 n * 1/2 * n。簡單地寫作 O(n^2)。

如果有需要Java複習腦圖、Java和大數據電子書,關注且私信「資料」即可獲取相關精品教程以及文檔等資料。

相關焦點

  • 排序算法:選擇排序
    在日常開發中經常會遇到一類問題,就是對一個集合的數據進行排序掌握一些排序算法,對於日常開發是非常有幫助的今天介紹一下選擇排序法01算法邏輯02時間複雜度由上圖邏輯可以得出,選擇排序的循環次數為由循環次數可以得出,選擇排序的時間複雜度為03空間複雜度由上圖邏輯可以得出
  • SelectionSort 選擇排序算法詳解(java 實現)
    選擇排序選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。選擇排序的主要優點與數據移動有關。
  • 輕鬆搞定Java冒泡排序算法以及算法優化
    作為Java程式設計師,簡單的算法,必須要掌握的。尤其初級開發人員在面試過程或者筆試都會有相應算法題,今天我們講解冒泡排序算法是如何實現的以及優化方法。何為冒泡排序冒泡排序的基本思路:通過對待排序系列從前向後,依次比較相鄰元素的值,若發現逆序就交換,意思就是使較大的元素從前向後移,好比水低下的氣泡一樣逐漸向上冒泡,一個道理的。冒泡排序優缺點優點:比較簡單、空間複雜度較低、是穩定的一種排序。
  • Java實現冒泡排序算法
    .常用數據結構數組、鍊表、棧、隊列 散列表、二叉樹、堆 跳表、圖5.常用算法 遞歸、排序、二分查找 搜索、哈希、貪心、分治 動態規劃、字符串匹配2.考考你在上一篇:數據結構與算法系列十(排序概述)中,我們列舉了常用的排序算法,以及分析了如何綜合衡量排序算法的優劣。
  • 經典排序算法三 選擇排序(JAVA實現)
    選擇排序原理:每一趟從待排序的記錄中選出最小的元素,順序放在已排好序的序列最後,直到全部記錄排序完畢。也就是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。基於此思想的算法主要有簡單選擇排序、樹型選擇排序和堆排序。
  • Java中常見的排序算法有哪些?---冒泡排序
    排序相關的的基本概念排序: 將一組雜亂無章的數據按一定的規律順次排列起來。數據表( data list): 它是待排序數據對象的有限集合。排序碼(key):通常數據對象有多個屬性域,即多個數據成員組成,其中有一個屬性域可用來區分對象,作為排序依據。該域即為排序碼。
  • 一文圖解 Java 源碼的插入排序算法
    (一)》講了什麼是選擇問題,什麼是比較能力。選擇問題,是假設一組 N 個數,要確定其中第 K 個最大值者。算法是為求解一個問題。那什麼是算法?算法是某種集合,是簡單指令的集合,是被指定的簡單指令集合。確定該算法重要的指標:第一是否能解決問題;第二算法運行時間,即解決問題出結果需要多少時間;還有所需的空間資源,比如內存等。很多時候,寫一個工作程序並不夠。
  • 還是java牛逼,一行代碼搞定各種排序
    >        this.id = id;        this.score = score;    }    // getter、setter大家自己補上    @Override    public String toString() {        return "Stu{" +                "id
  • 排序算法:歸併排序
    在日常開發中經常會遇到一類問題,就是對一個集合的數據進行排序掌握一些排序算法,對於日常開發是非常有幫助今天介紹一下歸併排序法01算法邏輯02時間複雜度由上圖邏輯可以得出,歸併排序的循環次數為由算法導論的主定理可以推導出,可見之前的文章(文末有連結)歸併排序的時間複雜度為03空間複雜度由上圖邏輯可以得出,歸併排序每次分解都是要復一份新的數據片段
  • 排序算法:快速排序
    在日常開發中經常會遇到一類問題,就是對一個集合的數據進行排序掌握一些排序算法,對於日常開發是非常有幫助今天介紹一下快速排序法01算法邏輯02時間複雜度由上圖邏輯可以得出,參照遞歸表達式漸進複雜度分析快速排序的時間複雜度遞歸表達式為,其中a=2,b=2,d=1由算法導論的主定理可以推導出,快速排序的時間複雜度為03空間複雜度由上圖邏輯可以得出
  • 詳解JAVA數據結構與算法:排序算法
    排序算法排序也稱排序算法(Sort Algorithm),排序是將一組數據,依指定的順序進行排列的過程。排序的分類:1) 內部排序:指將需要處理的所有數據都加載到內部存儲器中進行排序。有 的算法需要佔用的臨時工作單元數與解決問題的規模 n 有關,它隨著 n 的增大而增大,當 n 較大時,將佔用較多的存儲單元,例 如快速排序和歸併排序算法就屬於這種情 況3) 在做算法分析時, 主要討論的是時間複雜度 。從用戶使用體驗上看,更看重的程序執行的速度。
  • 排序算法問題:穩定排序與不穩定排序
    正文這幾天筆試了好幾次了,連續碰到一個關於常見排序算法穩定性判別的問題,往往還是多選,對於我以及和我一樣拿不準的同學可不是一個能輕易下結論的題目,當然如果你筆試之前已經記住了數據結構書上哪些是穩定的,哪些不是穩定的,做起來應該可以輕鬆搞定。本文是針對老是記不住這個或者想真正明白到底為什麼是穩定或者不穩定的人準備的。
  • Java 快速排序算法
    簡介上一章我們學習了 [Java 希爾排序算法],這一章,我們來學習快速排序算法
  • 高手才能看懂的JAVA排序算法圖解
    背景排序算法是JAVA面試中經常被問到的面試題,但排序算法很多,全部記下是一件很困難的事情。現整理多種排序算法圖解幫助JAVA面試者理解和掌握排序算法,能看懂下面的算法圖解,說明你已經掌握了該排序算法。
  • 排序算法——選擇排序(Selection Sort)
    選擇排序選擇排序是一種簡單直觀的排序算法,無論什麼數據進去都是 O(n²) 的時間複雜度。所以用到它的時候,數據規模越小越好。
  • 插入排序算法,就這麼簡單
    確定該算法重要的指標:第一是否能解決問題;第二算法運行時間,即解決問題出結果需要多少時間;還有所需的空間資源,比如內存等。很多時候,寫一個工作程序並不夠。因為遇到大數據下,運行時間就是一個重要的問題。算法性能用大 O 標記法表示。大 O 標記法是標記相對增長率,精度是粗糙的。比如 2N 和 3N + 2 ,都是 O(N)。
  • 經典排序算法一 冒泡排序(JAVA實現)
    舉例說明:{3,1,5,7,9,2}下圖中第一列為排序前的數組,第二列為開始排序直至最後一列排序結束是每一輪冒泡排序的結果,2就像一個氣泡一樣一直上升,這應該就是冒泡排序名稱的由來。冒泡排序圖片說明下面為java代碼以及測試過程輸出結果:public static void main(String[] args) {int array[] = {3,1,5,7,9,2}; for
  • 第二篇,選擇排序算法:簡單選擇排序、堆排序
    此為第二篇,選擇排序算法:簡單選擇排序、堆排序。
  • Java面試之排序算法篇(動圖)
    算法是編程的基礎,是面試過程中經常問到的熱點問題之一,尤其是排序算法。但是大部分的網際網路公司只要回答出基本的思路或者原理即可,點到為止,除了華為社招有機試寫代碼,其他公司不多見。下面我們就整理了常見的八大排序算法,供大家參考。
  • Java單循環直接選擇排序算法
    一.單循環選擇排序法介紹(1)原理介紹:創建一個for循環,此循環是一個循環次數逐漸減少的循環,它的優點是不用循環嵌套也能自主多次循環。通過此for循環模擬經典直接選擇排序法中的內循環。(2)經典直接選擇選擇排序法中的外循環實際上就是一個計數器,我們在一個循環裡就可以做到,而不必另外再外嵌套一個循環。