java排序高級之選擇排序?qū)崿F(xiàn)方法
本文實(shí)例講述了java排序高級之選擇排序?qū)崿F(xiàn)方法。分享給大家供大家參考。具體如下:
選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理如下。首先在未排序序列中找到最?。ù螅┰兀娣诺脚判蛐蛄械钠鹗嘉恢?,然后,再從剩余未排序元素中繼續(xù)尋找最?。ù螅┰兀缓蠓诺揭雅判蛐蛄械哪┪?。以此類推,直到所有元素均排序完畢。
選擇排序的主要優(yōu)點(diǎn)與數(shù)據(jù)移動(dòng)有關(guān)。如果某個(gè)元素位于正確的最終位置上,則它不會被移動(dòng)。選擇排序每次交換一對元素,它們當(dāng)中至少有一個(gè)將被移到其最終位置上,因此對n個(gè)元素的表進(jìn)行排序總共進(jìn)行至多n-1次交換。在所有的完全依靠交換去移動(dòng)元素的排序方法中,選擇排序?qū)儆诜浅:玫囊环N。
最差時(shí)間復(fù)雜度 О(n²)
最優(yōu)時(shí)間復(fù)雜度 О(n²)
平均時(shí)間復(fù)雜度 О(n²)
最差空間復(fù)雜度 О(n) total, O(1) auxiliary
代碼實(shí)現(xiàn):
package com.baobaotao.test; /** * 排序研究 * */ public class Sort { /** * 選擇排序 * @param array 數(shù)組 */ public static void selectSort(int[] array) { int length = array.length ; int index = 0 ; for(int i=0;i<length-1;i++) { index = i ; for(int j=i+1;j<length;j++) { if(array[j] < array[index]) { index = j ; } } swap(array, i, index) ; printArr(array) ; } } /** * 按從小到大的順序交換數(shù)組 * @param a 傳入的數(shù)組 * @param b 傳入的要交換的數(shù)b * @param c 傳入的要交換的數(shù)c */ public static void swap(int[] a, int b, int c) { if(b == c) return ; int temp = a[b] ; a[b] = a[c] ; a[c] = temp ; } /** * 打印數(shù)組 * @param array */ public static void printArr(int[] array) { for(int c : array) { System.out.print(c + " "); } System.out.println(); } public static void main(String[] args) { int[] number={11,95,45,15,78,84,51,24,12} ; selectSort(number) ; } }
輸出:
11 95 45 15 78 84 51 24 12 11 12 45 15 78 84 51 24 95 11 12 15 45 78 84 51 24 95 11 12 15 24 78 84 51 45 95 11 12 15 24 45 84 51 78 95 11 12 15 24 45 51 84 78 95 11 12 15 24 45 51 78 84 95 11 12 15 24 45 51 78 84 95
希望本文所述對大家的java程序設(shè)計(jì)有所幫助。
相關(guān)文章
SpringBoot項(xiàng)目報(bào)錯(cuò):"Error?starting?ApplicationContext....
這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目報(bào)錯(cuò):“Error?starting?ApplicationContext.?To?display?the?conditions?report?re-run?...”的解決辦法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08java調(diào)用ffmpeg實(shí)現(xiàn)轉(zhuǎn)換視頻
這篇文章主要為大家詳細(xì)介紹了java調(diào)用ffmpeg實(shí)現(xiàn)轉(zhuǎn)換視頻功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12SpringBoot 策略模式實(shí)現(xiàn)切換上傳文件模式
策略模式是指有一定行動(dòng)內(nèi)容的相對穩(wěn)定的策略名稱,這篇文章主要介紹了SpringBoot 策略模式 切換上傳文件模式,需要的朋友可以參考下2023-11-11MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例
這篇文章主要介紹了MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01Java后臺批量生產(chǎn)echarts圖表并保存圖片
這篇文章主要介紹了Java后臺批量生產(chǎn)echarts圖表并保存圖片,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05Java詳解實(shí)現(xiàn)ATM機(jī)模擬系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)控制臺版本的ATM銀行管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06Java微信小程序oss圖片上傳的實(shí)現(xiàn)方法
這篇文章主要介紹了Java微信小程序oss圖片上傳的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12