日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

raptor五个数排序流程图_经典算法系列之:选择排序

發(fā)布時(shí)間:2024/4/17 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 raptor五个数排序流程图_经典算法系列之:选择排序 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、前言

算法,在計(jì)算機(jī)中的地位,就相當(dāng)于人類大腦的決策中樞系統(tǒng),哪怕最簡單的算法,其精妙的思維方式,都可以讓人開啟一扇新的視窗。

算法,它不僅僅只是狹義的用來解決計(jì)算機(jī)科學(xué)領(lǐng)域的問題,更是一種“思維方式”。算法思維,是一種深度思考和創(chuàng)造的過程。

算法,只有真正理解了,而不只是所謂的知道,并將應(yīng)用到生活、工作、學(xué)習(xí)等各個(gè)方面,它將一定使人受益終生。

2、原理推導(dǎo)

選擇排序,就是選擇一個(gè)固定的元素與之后的元素依次比較,把小的元素往前調(diào)或者把大的元素往后調(diào),實(shí)現(xiàn)元素的順序排列。

給定一組 {9,7,1,5,8,6} 的原始無序數(shù)組,按照從小到大升序排列。

#step1

第一個(gè)數(shù)字【9】和第二、三、四、五、六個(gè)數(shù)字依次比較,得出最小數(shù)字1,然后數(shù)字 【1】 和 【9】 位置互換,完成第一輪排序。

#step2

第二個(gè)數(shù)字【7】和第三、四、五、六個(gè)數(shù)字依次比較,得出最小數(shù)字5,然后 【5】 和 【7】 位置互換,完成第二輪排序。

#step3

第三個(gè)數(shù)字【9】和第四、五、六個(gè)數(shù)字依次比較,得出最小數(shù)字6,然后 【6】 和 【9】 位置互換,完成第三輪排序。

#step4

第四個(gè)數(shù)字【7】和第五、六個(gè)數(shù)字依次比較,得出最小數(shù)字7,數(shù)字 【7】 和 【8】 位置不需要互換,完成第四輪排序。

#step5

第五個(gè)數(shù)字【8】和第六個(gè)數(shù)字依次比較,得出最小數(shù)字8,數(shù)字【8】 和 【9】 位置不需要互換,完成第五輪排序。

至此,選擇排序已經(jīng)完成結(jié)果為:{1,5,6,7,8,9} ,我們可以看到step4順序已經(jīng)排好了,但程序并不知道,所以還會(huì)接著繼續(xù)比較直到最后。

3、代碼示例

# 第一種實(shí)現(xiàn),每次比對(duì)只要符合條件,馬上交換兩個(gè)元素位置

public static void chooseSortOne(int array[]){ //外層循環(huán)控制總次數(shù) for (int i=0;i<array.length-1;i++){ //內(nèi)層循環(huán)控制單個(gè)元素比較次數(shù) for (int j=i+1;j<array.length;j++){ //選擇每次從索引【i】開始,分別與后面的其他元素比較,不是相鄰的兩個(gè)數(shù)相比較 if(array[i] > array[j]){ //每次比較滿足條件,進(jìn)行位置交換 swapPosition(array, j, i); } } } }

# 第二種實(shí)現(xiàn),每次比對(duì)符合條件,不進(jìn)行位置交換,只記錄需要交換的索引,到一輪比較結(jié)束再交換位置

public static void chooseSortTwo(int array[]){ //交換索引 int index = 0; //外層循環(huán)控制總次數(shù) for (int i=0;i<array.length-1;i++){ //每次從【i】開始,index根據(jù)比較結(jié)果,更新索引位置 index = i; //選擇每次從索引【index】開始,分別與后面的其他元素比較,不是相鄰的兩個(gè)數(shù)相比較 for (int j=i+1;j<array.length;j++){ if(array[index] > array[j]){ //滿足條件時(shí)不進(jìn)行位置交換,只記錄索引,下次比較以新的索引為起始位置 index = j; } } //一輪循環(huán)結(jié)束,再將兩個(gè)數(shù)的索引位置互換,節(jié)省交換次數(shù),提高排序效率 swapPosition(array, index, i); } }

# 元素交換方法

public static void swapPosition(int array[], int indexA, int indexB){ int temp = array[indexA]; array[indexA] = array[indexB]; array[indexB] = temp; }

4、禪定時(shí)刻

選擇排序的精妙之處不在于選擇一個(gè)元素依次比較,而在于對(duì)他的優(yōu)化處理,比較而不交換,一個(gè)小的調(diào)整,在數(shù)據(jù)量級(jí)不大的時(shí)候,難以體現(xiàn)它的優(yōu)勢(shì),一旦數(shù)據(jù)量級(jí)超過一定的界限,運(yùn)算效率的速度就相差巨大。

一個(gè)產(chǎn)品創(chuàng)造過程中,我們遇到常規(guī)的問題,用常規(guī)的解決方案可以應(yīng)付,如果能養(yǎng)成習(xí)慣多一份思考,在此基礎(chǔ)上持續(xù)改進(jìn),優(yōu)化實(shí)現(xiàn)方法,日積月累這就形成了個(gè)人和企業(yè)的護(hù)城河,增強(qiáng)個(gè)人和企業(yè)在社會(huì)中的競(jìng)爭(zhēng)力。

作者簡介

思維的持續(xù),一個(gè)真的有思想,不穿格子襯衫的程序員。

總結(jié)

以上是生活随笔為你收集整理的raptor五个数排序流程图_经典算法系列之:选择排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。