摘要:選擇排序就是把最大或者最小的數(shù)找出來(lái)后,從數(shù)組邊緣開(kāi)始逐個(gè)地放置好。選擇排序的時(shí)間復(fù)雜度為這是一種不穩(wěn)定的排序。代碼實(shí)現(xiàn)如下記錄下最小值的位置交換兩個(gè)位置的值
選擇排序就是把最大或者最小的數(shù)找出來(lái)后,從數(shù)組邊緣開(kāi)始逐個(gè)地放置好。
如下圖(這里我以找出最小的數(shù)字為例):
這種方法的基本步驟如下:
1.先從第一個(gè)元素開(kāi)始,相鄰的兩個(gè)元素進(jìn)行比較,最后得出第一次比較中最小的元素;
2.記錄好這個(gè)最小元素的位置,并把這個(gè)元素與第一個(gè)元素互換位置;
3.接著再?gòu)牡诙€(gè)元素開(kāi)始,相鄰的兩個(gè)元素再進(jìn)行比較,得出第二次比較中最小的元素;
4.記錄好這個(gè)最小元素的位置,并把這個(gè)元素與第二個(gè)元素互換位置;
5.如此類(lèi)推......最終實(shí)現(xiàn)有序排列。
選擇排序的時(shí)間復(fù)雜度為O(N^2),這是一種不穩(wěn)定的排序。
代碼實(shí)現(xiàn)如下:
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;//記錄下最小值的位置 } } //交換兩個(gè)位置的值 if(location != i) { int temp = nums[i]; nums[i] = nums[location]; nums[location] = temp; } }
}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/71313.html
摘要:我們討論比較排序算法的理論基礎(chǔ),并結(jié)合本章應(yīng)用排序和優(yōu)先級(jí)隊(duì)列算法?;九判蛞肓诉x擇排序,插入排序和。描述了,一種保證在線(xiàn)性時(shí)間內(nèi)運(yùn)行的排序算法。當(dāng)我們后續(xù)實(shí)現(xiàn)排序算法時(shí),我們實(shí)際上將這個(gè)機(jī)制隱藏在我們的實(shí)現(xiàn)下面。 前言 上一篇:棧和隊(duì)列下一篇:歸并排序 排序是重新排列一系列對(duì)象以便按照某種邏輯順序排列的過(guò)程。排序在商業(yè)數(shù)據(jù)處理和現(xiàn)代科學(xué)計(jì)算中起著重要作用。在交易處理,組合優(yōu)化,天體...
摘要:選擇排序算法實(shí)現(xiàn)實(shí)現(xiàn)選擇排序,記錄最小元素的索引,最后才交換位置說(shuō)明交換兩個(gè)數(shù)組中的元素,在中有更簡(jiǎn)單的寫(xiě)法,這是的語(yǔ)法糖,其它語(yǔ)言中是沒(méi)有的。和語(yǔ)言中比較器的實(shí)現(xiàn)前面我們說(shuō)到了,我們?yōu)榱送怀雠判蛩惴ǖ乃枷?,將所有的例子僅限在數(shù)組排序中。 showImg(https://segmentfault.com/img/remote/1460000017909538?w=1949&h=1080...
摘要:向后移動(dòng)位簡(jiǎn)單選擇排序基本思想常用于取序列中最大最小的幾個(gè)數(shù)時(shí)。代碼實(shí)現(xiàn)循環(huán)次數(shù)選出最小的值和位置交換位置堆排序基本思想對(duì)簡(jiǎn)單選擇排序的優(yōu)化。 概述 常見(jiàn)的八大排序算法,它們之間的關(guān)系如下: showImg(https://segmentfault.com/img/remote/1460000011395738?w=880&h=671); 直接插入排序 希爾排序 簡(jiǎn)單選擇排序 堆排序...
摘要:直接插入排序的算法重點(diǎn)在于尋找插入位置。也稱(chēng)縮小增量排序,是直接插入排序算法的一種更高效的改進(jìn)版本。希爾排序是非穩(wěn)定排序算法。簡(jiǎn)單選擇排序常用于取序列中最大最小的幾個(gè)數(shù)時(shí)。將新構(gòu)成的所有的數(shù)的十位數(shù)取出,按照十位數(shù)進(jìn)行排序,構(gòu)成一個(gè)序列。 1.直接插入排序 直接插入排序算法是排序算法中最簡(jiǎn)單的,但在尋找插入位置時(shí)的效率不高?;舅枷刖褪菍⒁粋€(gè)待排序的數(shù)字在已經(jīng)排序的序列中尋找找到一個(gè)插...
閱讀 2695·2021-11-18 10:02
閱讀 2688·2021-11-15 11:38
閱讀 3798·2021-11-12 10:36
閱讀 767·2021-11-12 10:34
閱讀 2999·2021-10-21 09:38
閱讀 1601·2021-09-29 09:48
閱讀 1708·2021-09-29 09:34
閱讀 1187·2021-09-22 10:02