新聞中心
前言

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供新羅網(wǎng)站建設(shè)、新羅做網(wǎng)站、新羅網(wǎng)站設(shè)計(jì)、新羅網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、新羅企業(yè)網(wǎng)站模板建站服務(wù),十余年新羅做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
本篇博客是在伍迷兄的博客基礎(chǔ)上進(jìn)行的,其博客地址點(diǎn)擊就可以進(jìn)去,里面好博客很多,我的排序算法都來(lái)自于此;一些數(shù)據(jù)結(jié)構(gòu)方面的概念我就不多闡述了,伍迷兄的博客中都有詳細(xì)講解,而我寫(xiě)這些博客只是記錄自己學(xué)習(xí)過(guò)程,加入了一些自己的理解,同時(shí)也希望給別人提供幫助。
基本思想
選擇排序的基本思想是每一趟在n-i+1(i=1,2,…,n-1)個(gè)記錄中選取關(guān)鍵字最小的記錄作為有序序列的第i個(gè)記錄。我們這里先介紹的是簡(jiǎn)單選擇排序法。簡(jiǎn)單選擇排序法(Simple Selection Sort)就是通過(guò)n-i次關(guān)鍵字間的比較,從n-i+1個(gè)記錄中選出關(guān)鍵字最小的記錄,并和第i(1≤i≤n)個(gè)記錄交換之,就是說(shuō)一剛開(kāi)始,從序列arr[0...n-1]選出最小的元素與第1個(gè)記錄即arr[0]交換,再?gòu)腶rr[1...n-1]中選出最小的與arr[1]進(jìn)行交換,arr[2...n-1]中最小的與arr[2]進(jìn)行交換,以此類推,直至整個(gè)序列有序。
代碼實(shí)現(xiàn)
/**
* 簡(jiǎn)單選擇排序
* @param arr
*/
public static void simpleSelectSort(int[] arr){
int len = arr.length;
int index; // 記錄arr[i...len-1]最小元素的下標(biāo)
for(int i=0; i arr[j]){
index = j;
}
}
swap(arr,i,index); // 交換arr[i]和arr[index]
}
} 執(zhí)行過(guò)程模擬
上面的代碼應(yīng)該是很容易理解的,不過(guò)我們還是來(lái)模擬一下計(jì)算機(jī)執(zhí)行的過(guò)程。
1)一開(kāi)始,初始序列是{5,3,7,9,1,6,4,8,2},i=0,index=i=0,j=i+1=1,初始時(shí),狀態(tài)如下
2)i=0時(shí)
3)i=1時(shí),同理,交換如下
4)i=2,3,4,5,6,7,8時(shí),如下
至此,整個(gè)序列已經(jīng)從小到大有序了;當(dāng)然,從上面的模擬過(guò)程可以看出來(lái),算法是可以些許改善的,改善的事就交給各位看官了,就當(dāng)是拓展!
總結(jié)
簡(jiǎn)單排序算法還是比較簡(jiǎn)單的,沒(méi)什么難點(diǎn),希望大家能夠在我提供的代碼實(shí)現(xiàn)上進(jìn)行些許優(yōu)化,比如當(dāng)i=index時(shí),不需要優(yōu)化,等等!
網(wǎng)站欄目:排序之簡(jiǎn)單選擇排序
文章分享:http://fisionsoft.com.cn/article/coegded.html


咨詢
建站咨詢
