詳情描述
千鋒西安JavaEE培訓(xùn)編程語(yǔ)言
在Java的學(xué)習(xí)中,無(wú)疑要掌握變量、數(shù)組等基本的知識(shí),所以一些算法也是必須要掌握的,今天是千鋒JavaEE培訓(xùn)老師將為大家?guī)?lái)的是java常用的排序算法,有需要的朋友可以參考一下。
java常用的七個(gè)排序算法
1.選擇排序算法
使用選擇排序的基本思想是遍歷數(shù)組的過(guò)程中,它是以i代表當(dāng)前需要排序的序號(hào),則需要在剩余的[in-1]中找出其中的一個(gè)較 小值,然后將找到的較小值與i指向的值進(jìn)行交換。我們知道因?yàn)槊恳惶舜_定元素的過(guò)程中都會(huì)有一個(gè)選擇較 大值的子流程, 因此也是可以形象的稱它為選擇排序。
2.冒泡排序算法
冒泡排序它的意思就是將比較大的數(shù)字在較下面,而較小的數(shù)字是浮在上面的一個(gè)意思。
3.快速排序算法
通過(guò)一趟排序?qū)⒋庞涗浄指畛瑟?dú)立的兩部分,其中一部分記錄的關(guān)鍵字均比另一部分的關(guān)鍵字小,則可以分別對(duì)這兩部分記錄繼續(xù)進(jìn)行排序,已達(dá)到整個(gè)序列有序的目的,本質(zhì)就是,找一個(gè)基位。
4.合并排序算法
合并排序采用的是遞歸來(lái)實(shí)現(xiàn),因此是屬于“分而治之”,它可以是將目標(biāo)數(shù)組從中間一分為二,然后是分別對(duì)這兩個(gè)數(shù)組進(jìn)行排序,當(dāng)排序完畢之后再將排好序的兩個(gè)數(shù)組“歸并”到一起,合并排序?qū)嶋H上較重要的是合并的一個(gè)過(guò)程,在合并的過(guò)程中,則是需要額外的跟需要?dú)w并的兩個(gè)數(shù)組長(zhǎng)度一致的空間,這一點(diǎn)我們是需要理解清楚的。
5.插入排序算法
實(shí)際上插入排序的思想也是在遍歷數(shù)組的思想上的,我們假設(shè)在序號(hào)i之前的元素即都已經(jīng)排好序,則是需要找到i對(duì)應(yīng)的元素x的正確位置k,并且在尋找這個(gè)位置k的過(guò)程中逐個(gè)將比較過(guò)的元素往后移一位,為元素x“騰位置”,較 后將k對(duì)應(yīng)的元素值賦為x,那么在一般情況下,插入排序的時(shí)間復(fù)雜度和空間復(fù)雜度分別為O(n2)和O(1),注意它和選擇排序的方法有那么一點(diǎn)的區(qū)別。
6.希爾排序算法
所謂的希爾排序的誕生是由于插入排序在處理大規(guī)模數(shù)組的時(shí)候會(huì)遇到需要移動(dòng)太多元素的問(wèn)題。使用希爾排序的思想實(shí)際上是將一個(gè)大的數(shù)組“分而治之”,劃分為若干個(gè)小的數(shù)組,以gap來(lái)劃分, 希爾排序它是插入排序的改進(jìn)版,在數(shù)據(jù)量大的時(shí)候?qū)π实奶嵘龓椭艽?,?dāng)如果是數(shù)據(jù)量比較小的時(shí)候,那么建議直接使用插入排序就可以了。
7.較后來(lái)看看堆排序算法
堆排本質(zhì)上就是先構(gòu)造一個(gè)大頂堆,parent比children大,root的節(jié)點(diǎn)就是較 大的節(jié)點(diǎn)把較 大的節(jié)點(diǎn)(root)與尾節(jié)點(diǎn)(較 后一個(gè)節(jié)點(diǎn),比較?。┪恢没Q,然后剩下較 后的尾節(jié)點(diǎn),現(xiàn)在較 大,其余的,從第 一個(gè)元素開始到尾節(jié)點(diǎn)前一位,從而使構(gòu)造大頂堆遞歸。
以上是排序常用的方法,這幾種方式都有它一定的特點(diǎn),java中常用的七大排序算法是比較重要的一個(gè)基礎(chǔ)知識(shí)點(diǎn),在這個(gè)階段中如果學(xué)好了,則在正則表達(dá)式之類的學(xué)習(xí)將會(huì)更加有利。
千鋒教育:
千鋒西安校區(qū):
西安校區(qū)地址:西安市雁塔區(qū)高新六路52號(hào)立人科技C座西區(qū)4樓
面授課程:全棧WEB+培訓(xùn)、全鏈路設(shè)計(jì)培訓(xùn)、PHP全棧+服務(wù)器集群培訓(xùn)、JavaEE+分布式開發(fā)培訓(xùn)、大數(shù)據(jù)+人工智能培訓(xùn)、 Unity游戲開發(fā)培訓(xùn)、Python培訓(xùn)、云計(jì)算+Python運(yùn)維培訓(xùn)、全棧軟件測(cè)試培訓(xùn)、Android培訓(xùn)、iOS培訓(xùn)