大家在學(xué)習(xí)java的過(guò)程中一定都會(huì)接觸到排序算法,而且排序算法是編程學(xué)習(xí)的過(guò)程中最先接觸的算法。今天給大家?guī)?lái)算法的一次回憶,排序算法入門(mén)的三種基礎(chǔ)算法——選擇排序、冒牌排序和插入排序。
選擇排序
選擇排序,弟中弟,最沒(méi)用的算法,時(shí)間復(fù)雜度非常之高,所以說(shuō)這個(gè)算法是最沒(méi)用的算法。但是這個(gè)算法是給編程學(xué)習(xí)者帶來(lái)思路的,用來(lái)做算法入門(mén)的墊腳石是非常不錯(cuò)的。
排序算法的思路:過(guò)濾整個(gè)數(shù)組,將最小的數(shù)換到第一位,重復(fù)該過(guò)程,直到遍歷數(shù)組,結(jié)束程序。
首先,寫(xiě)一個(gè)循環(huán)遍歷數(shù)組并將數(shù)組中元素打印出來(lái)的方法。命名為print( ); 方法。
數(shù)組需要經(jīng)過(guò)循環(huán)遍歷,并且將每次遍歷的最小的數(shù)(minPos)與第一位進(jìn)行交換。
進(jìn)行元素交換的方法,也可以抽出來(lái)封裝為一個(gè)單獨(dú)的方法(swap)。
運(yùn)行結(jié)果如下:
冒泡排序
冒泡排序是一種比較簡(jiǎn)單的排序算法,它循環(huán)走過(guò)需要排序的元素,依次比較相鄰的兩個(gè)元素,如果順序錯(cuò)誤就交換,直至沒(méi)有元素交換,完成排序。
數(shù)組循環(huán)遍歷打印的方法,以及元素交換的方法如下:
將排序算法中的循環(huán)比較抽象為方法
結(jié)果如下
插入排序
插入式排序?qū)儆趦?nèi)部排序法,是對(duì)于欲排序的元素以插入的方式找尋該元素的適當(dāng)位置,以達(dá)到排序的目的。
具體思路如下:
排序方法設(shè)計(jì):
程序運(yùn)行結(jié)果如下:
小結(jié):
選擇排序、冒泡排序、插入排序,這三種比較簡(jiǎn)單的排序方法只是Java算法中的冰山一角而已,對(duì)于各種其他的排序算法,比如:快速排序、希爾排序、計(jì)數(shù)排序、基數(shù)排序等等。如果將來(lái)你要進(jìn)階大數(shù)據(jù),還有各種回歸算法、長(zhǎng)尾效應(yīng)等著你去理解,簡(jiǎn)直不要太爽的。
希望本文可以給你帶來(lái)簡(jiǎn)單的幫助。
?