java排序高級(jí)之選擇排序?qū)崿F(xiàn)方法
本文實(shí)例講述了java排序高級(jí)之選擇排序?qū)崿F(xiàn)方法。分享給大家供大家參考。具體如下:
選擇排序(Selection sort)是一種簡(jiǎn)單直觀的排序算法。它的工作原理如下。首先在未排序序列中找到最?。ù螅┰?,存放到排序序列的起始位置,然后,再?gòu)氖S辔磁判蛟刂欣^續(xù)尋找最小(大)元素,然后放到已排序序列的末尾。以此類(lèi)推,直到所有元素均排序完畢。
選擇排序的主要優(yōu)點(diǎn)與數(shù)據(jù)移動(dòng)有關(guān)。如果某個(gè)元素位于正確的最終位置上,則它不會(huì)被移動(dòng)。選擇排序每次交換一對(duì)元素,它們當(dāng)中至少有一個(gè)將被移到其最終位置上,因此對(duì)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
希望本文所述對(duì)大家的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?...”的解決辦法,文中通過(guò)圖文介紹的非常詳細(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)容的相對(duì)穩(wěn)定的策略名稱(chēng),這篇文章主要介紹了SpringBoot 策略模式 切換上傳文件模式,需要的朋友可以參考下2023-11-11MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫(xiě)法案例
這篇文章主要介紹了MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫(xiě)法案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01Java后臺(tái)批量生產(chǎn)echarts圖表并保存圖片
這篇文章主要介紹了Java后臺(tái)批量生產(chǎn)echarts圖表并保存圖片,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05Java詳解實(shí)現(xiàn)ATM機(jī)模擬系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)控制臺(tái)版本的ATM銀行管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06詳解SpringBoot多跨域請(qǐng)求的支持(JSONP)
跨域是很多項(xiàng)目需要遇到的文章,本篇文章主要介紹了詳解SpringBoot多跨域請(qǐng)求的支持(JSONP),具有一定的參考價(jià)值,有興趣的可以了解一下2017-04-04Java微信小程序oss圖片上傳的實(shí)現(xiàn)方法
這篇文章主要介紹了Java微信小程序oss圖片上傳的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12