摘要:選擇排序就是把最大或者最小的數找出來后,從數組邊緣開始逐個地放置好。選擇排序的時間復雜度為這是一種不穩定的排序。代碼實現如下記錄下最小值的位置交換兩個位置的值
選擇排序就是把最大或者最小的數找出來后,從數組邊緣開始逐個地放置好。
如下圖(這里我以找出最小的數字為例):
這種方法的基本步驟如下:
1.先從第一個元素開始,相鄰的兩個元素進行比較,最后得出第一次比較中最小的元素;
2.記錄好這個最小元素的位置,并把這個元素與第一個元素互換位置;
3.接著再從第二個元素開始,相鄰的兩個元素再進行比較,得出第二次比較中最小的元素;
4.記錄好這個最小元素的位置,并把這個元素與第二個元素互換位置;
5.如此類推......最終實現有序排列。
選擇排序的時間復雜度為O(N^2),這是一種不穩定的排序。
代碼實現如下:
public static void selectionSort(int[] nums) {
for(int i = 0; i < nums.length-1; i++) { int location = i; for(int j = i; j < nums.length-1; j++) { if(nums[j+1] < nums[location]) { location = j+1;//記錄下最小值的位置 } } //交換兩個位置的值 if(location != i) { int temp = nums[i]; nums[i] = nums[location]; nums[location] = temp; } }
}
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71313.html
摘要:我們討論比較排序算法的理論基礎,并結合本章應用排序和優先級隊列算法。基本排序引入了選擇排序,插入排序和。描述了,一種保證在線性時間內運行的排序算法。當我們后續實現排序算法時,我們實際上將這個機制隱藏在我們的實現下面。 前言 上一篇:棧和隊列下一篇:歸并排序 排序是重新排列一系列對象以便按照某種邏輯順序排列的過程。排序在商業數據處理和現代科學計算中起著重要作用。在交易處理,組合優化,天體...
摘要:選擇排序算法實現實現選擇排序,記錄最小元素的索引,最后才交換位置說明交換兩個數組中的元素,在中有更簡單的寫法,這是的語法糖,其它語言中是沒有的。和語言中比較器的實現前面我們說到了,我們為了突出排序算法的思想,將所有的例子僅限在數組排序中。 showImg(https://segmentfault.com/img/remote/1460000017909538?w=1949&h=1080...
摘要:向后移動位簡單選擇排序基本思想常用于取序列中最大最小的幾個數時。代碼實現循環次數選出最小的值和位置交換位置堆排序基本思想對簡單選擇排序的優化。 概述 常見的八大排序算法,它們之間的關系如下: showImg(https://segmentfault.com/img/remote/1460000011395738?w=880&h=671); 直接插入排序 希爾排序 簡單選擇排序 堆排序...
摘要:直接插入排序的算法重點在于尋找插入位置。也稱縮小增量排序,是直接插入排序算法的一種更高效的改進版本。希爾排序是非穩定排序算法。簡單選擇排序常用于取序列中最大最小的幾個數時。將新構成的所有的數的十位數取出,按照十位數進行排序,構成一個序列。 1.直接插入排序 直接插入排序算法是排序算法中最簡單的,但在尋找插入位置時的效率不高。基本思想就是將一個待排序的數字在已經排序的序列中尋找找到一個插...
閱讀 2591·2021-11-18 10:02
閱讀 2627·2021-11-15 11:38
閱讀 3699·2021-11-12 10:36
閱讀 696·2021-11-12 10:34
閱讀 2888·2021-10-21 09:38
閱讀 1479·2021-09-29 09:48
閱讀 1492·2021-09-29 09:34
閱讀 1088·2021-09-22 10:02