性色xxx-性色欧美xo影院-性性欧美-性夜影院爽黄a爽免费看网站-久青草国产观看在线视频-久青草国产免费观看

推廣 熱搜: 廣場  Java  app  Word  營業(yè)  微信公眾號(hào)  北京代理記賬  商城  代理記賬  商標(biāo)交易 

java學(xué)習(xí)筆記之?dāng)?shù)組排序和查找 在Java中如何高效判斷數(shù)組中是否包含某個(gè)元素?

   2023-04-28 企業(yè)服務(wù)招財(cái)貓170
核心提示:給出的信息太少,比如數(shù)組類型是什么?數(shù)據(jù)分布是怎樣的?給個(gè)通用的做法:把數(shù)組按順序排好,二進(jìn)制找。是升序排序。比如一個(gè)塑料I數(shù)組,原來的順序是,9,8,7,6,5,4,3,2,1。使用()后,得到的結(jié)

給出的信息太少,比如數(shù)組類型是什么?數(shù)據(jù)分布是怎樣的?給個(gè)通用的做法:把數(shù)組按順序排好,二進(jìn)制找。

是升序排序。

比如一個(gè)塑料I數(shù)組,原來的順序是,9,8,7,6,5,4,3,2,1。使用()后,得到的結(jié)果是1,2,3,4,5,6,7,8,9。

如果需要改變排序,就改成降序,需要改變排序(要排序的內(nèi)容,())。

選擇排序法

N個(gè)記錄文件的直接選擇排序可以得到n-1個(gè)直接選擇排序后的有序結(jié)果:①初始狀態(tài):無序區(qū)為R[1...n],并且有序區(qū)域是空的。②在第一次排序中,從無序區(qū)域R[1]中選擇具有最小關(guān)鍵字的記錄R[k]..n],并且它與無序區(qū)域中的第一個(gè)記錄R[1]交換,使得R[1..1]和R[2..n]分別成為增加一條記錄的新有序區(qū)域和減少一條記錄的新無序區(qū)域。.....(3)第一次排序。

在第I個(gè)排序開始時(shí),當(dāng)前有序區(qū)域和無序區(qū)域是R[1..i-1]和R(i..n)分別為。這個(gè)排序從當(dāng)前無序區(qū)中選擇關(guān)鍵字最小的記錄R[k],與無序區(qū)中的第一條記錄R交換,使R[1...I]和R分別成為增加一條記錄的新有序區(qū)和減少一條記錄的新無序區(qū)。

排序?qū)嵗跏缄P(guān)鍵字[4938659776132749]

第一次排序后,13[38659776492749]

第二次排序后,1327[659776493849]

在第三遍排序后,132738[9776496549]

在第四遍排序后,13273849[76976549]

第五遍排序后,1327384949[976576]

第六遍排序后,132738494965[9776]

第七次排序后,13273849496576[97]

最終排名結(jié)果1327384949657697

Java實(shí)現(xiàn)代碼如下:

驗(yàn)證了結(jié)果的正確性。

氣泡法

原則

冒泡排序算法的工作如下:比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就把它們換了。對(duì)每對(duì)相鄰的元素做同樣的工作,從第一對(duì)到最后一對(duì)。此時(shí),最后一個(gè)元素應(yīng)該是最大的數(shù)字。對(duì)除最后一個(gè)元素之外的所有元素重復(fù)上述步驟。每次對(duì)越來越少的元素繼續(xù)重復(fù)上述步驟,直到?jīng)]有要比較的數(shù)字對(duì)。算法分析算法穩(wěn)定性冒泡排序是將小元素前移或大元素后移。比較是兩個(gè)相鄰元素的比較,交換也發(fā)生在這兩個(gè)元素之間。所以,如果兩個(gè)元素相等,我認(rèn)為你贏了。;不要厭倦再次交換它們;如果兩個(gè)相等的元素不相鄰,即使通過之前的兩兩交換相鄰,此時(shí)也不會(huì)交換,所以相同元素的順序沒有改變,所以冒泡排序是一種穩(wěn)定的排序算法。

Java實(shí)現(xiàn)代碼:

插入排序

插入排序的算法描述是一種簡單直觀的排序算法。它的工作原理是構(gòu)造一個(gè)有序序列,在排序后的序列中從后向前掃描無序數(shù)據(jù),找到對(duì)應(yīng)的位置并插入。在插入排序的實(shí)現(xiàn)中,通常采用原地排序(即只有O(1)額外空間的排序),所以在從后向前掃描的過程中,需要反復(fù)地將排序后的元素逐步向后移動(dòng),為最新的元素提供插入空間。

算法描述一般來說,插入排序是通過就地在數(shù)組上實(shí)現(xiàn)的。具體算法描述如下:從第一個(gè)元素開始,可以認(rèn)為這個(gè)元素已經(jīng)排序取出下一個(gè)元素,在排序后的元素序列中從后向前掃描。如果這個(gè)元素(已排序)大于新元素,將其移動(dòng)到下一個(gè)位置并重復(fù)步驟3,直到找到已排序元素小于或等于新元素的位置,然后重復(fù)步驟2-5。如果比較操作的成本大于交換操作的成本,可以采用二分搜索法方法來減少比較操作的次數(shù)。這種算法可以看作是插入排序的一種變體,稱為二分搜索法排序。

Java示例代碼如下:

殼牌石油公司排序

Hill排序通過將所有比較的元素分成幾個(gè)區(qū)域來提高插入排序的性能。這允許一個(gè)元素一次向它的最終位置邁出一大步。然后算法采取越來越小的步驟進(jìn)行排序,算法的最后一步是普通的插入排序,但是到了這一步,要排序的數(shù)據(jù)就排列的差不多了(此時(shí)插入排序更快)。假設(shè)在一個(gè)按升序排序的數(shù)組的末尾有一個(gè)非常小的數(shù)據(jù)。如果使用復(fù)雜度為O(n2)的排序(冒泡排序或插入排序),可能需要n次比較和交換才能將數(shù)據(jù)移動(dòng)到正確的位置。但是,希爾排序會(huì)以較大的步長移動(dòng)數(shù)據(jù),因此小數(shù)據(jù)只需幾次比較和交換就可以到達(dá)正確的位置。更好地理解Hill排序?qū)崿F(xiàn):將數(shù)組列在一個(gè)表中,并對(duì)列進(jìn)行排序(按插入排序)。重復(fù)此過程,但每次使用更長的列。最后,整個(gè)表格只有一列。將數(shù)組轉(zhuǎn)換成表格的目的是為了更好地理解這個(gè)算法。算法本身只對(duì)原始數(shù)組進(jìn)行排序(通過增加索引的步長,比如用istep_size代替I)。

例如,假設(shè)有這樣一組數(shù)字[13149433822559946523452773253910],如果我們以步長5開始排序,我們可以通過將這個(gè)列表放在一個(gè)有5列的表中來更好地描述算法。

所以它們應(yīng)該是這樣的:

然后我們對(duì)每一列進(jìn)行排序:當(dāng)上述四行數(shù)字按順序連接在一起時(shí),我們得到:[101473252313279433392594658245]。這時(shí)10已經(jīng)移動(dòng)到正確的位置,然后分3步排序:排序后變成:最后分1步排序(此時(shí)是簡單的插入排序)。

在實(shí)際使用過程中,排序的數(shù)據(jù)絕對(duì)不只是十個(gè),而是以上的思路。其實(shí)排序只是插入排序的一種優(yōu)化。

快速排序思路:從待排序的記錄序列中選擇一條記錄(通常是第一條記錄)作為支點(diǎn),然后將其他關(guān)鍵字小于k1的記錄移到前面,關(guān)鍵字大于k1的記錄移到后面。結(jié)果,要排序的序列被分成兩個(gè)子表,最后在分割線的位置找到帶有關(guān)鍵字k1的記錄。算法步驟:假設(shè)要?jiǎng)澐值男蛄袨閞[left],R[left1],...r[right],實(shí)現(xiàn)上面的除法過程,可以設(shè)置兩個(gè)指針I(yè)和J,它們的初始值分別是左和右。首先將參考記錄r[left]移動(dòng)到變量X中,變量X為r[left],即r[i]相當(dāng)于一個(gè)空單元格,然后重復(fù)下面兩個(gè)掃描過程,直到I和J相遇。直到r[j]。key(2)i從左向后掃描,直到r[i],將r[i]移動(dòng)到空單元格r[j],此時(shí)r[i]相當(dāng)于空單元格。當(dāng)I和J相遇時(shí),r[i](或r[j])相當(dāng)于一個(gè)空單元格,r[i]左邊所有記錄的關(guān)鍵字不大于基準(zhǔn)記錄的關(guān)鍵字,而r[i]右邊所有記錄的關(guān)鍵字不小于基準(zhǔn)記錄的關(guān)鍵字。最后,將基準(zhǔn)記錄移動(dòng)到r[i],并完成一個(gè)劃分過程。最后,通過遞歸調(diào)用排序函數(shù)對(duì)子表進(jìn)行排序。Java示例代碼如下:

歸并排序歸并排序是一種基于歸并運(yùn)算的有效排序算法。這個(gè)算法是分而治之的一個(gè)非常典型的應(yīng)用。值得注意的是,歸并排序是一種穩(wěn)定的排序方法。合并有序子序列以獲得完全有序的序列;也就是說,首先對(duì)每個(gè)子序列進(jìn)行排序,然后對(duì)子序列段進(jìn)行排序。如果兩個(gè)有序表合并成一個(gè)有序表,稱為雙向合并。歸并操作歸并操作(也叫歸并算法)是指將兩個(gè)順序序列合并成一個(gè)順序序列的方法。如果有系列(6,202,100,301,38,8,1)初始狀態(tài):6,202,100,301,38,8,1第一次合并后:{6,202},{100,301},{8,38},{1},比較次數(shù):3;第二次合并后:{6,100,202,301},{1,8,38},比較次數(shù):4;第三次合并后:{1,6,8,38,100,202,301},比較次數(shù):4;對(duì)比總數(shù)為:34411;倒數(shù)是14;算法對(duì)歸并操作的工作原理描述如下:第一步:申請(qǐng)一個(gè)大小為兩個(gè)排序序列之和的空間,用來存放歸并后的序列;步驟2:設(shè)置兩個(gè)指針,其初始位置分別為兩個(gè)排序序列的起始位置;第三步:比較兩個(gè)指針?biāo)赶虻脑兀x擇一個(gè)相對(duì)較小的元素放入合并空間,將指針移動(dòng)到下一個(gè)位置重復(fù)第三步,直到一個(gè)指針超過序列的末尾,直接復(fù)制另一個(gè)序列的所有剩余元素。

 
反對(duì) 0舉報(bào) 0 收藏 0 打賞 0評(píng)論 0
 
更多>同類資訊
推薦圖文
推薦資訊
點(diǎn)擊排行
合作伙伴
網(wǎng)站首頁  |  關(guān)于我們  |  聯(lián)系方式  |  使用協(xié)議  |  版權(quán)隱私  |  網(wǎng)站地圖  |  排名推廣  |  廣告服務(wù)  |  積分換禮  |  網(wǎng)站留言  |  RSS訂閱  |  違規(guī)舉報(bào)  |  冀ICP備2023006999號(hào)-8
 
主站蜘蛛池模板: 中国free性护士xxxxhd | 一个人在线免费观看www视频 | 男女上下猛烈动态图午夜 | 国产成人综合91精品 | 成人在线观看视频免费 | 亚洲福利网址 | 曰韩色视频 | 最近高清无吗免费看 | 在线精品国内外视频 | 深夜天堂| 午夜激情网站 | 免费人成大片在线观看播放 | 中文字幕 日韩在线 | 日韩福利视频导航 | 老妇激情毛片 | 成人免费a视频 | 欧美精品在线免费 | 国产精品亚洲一区二区在线观看 | 免费成年人在线观看视频 | 天天干天天舔天天操 | 动漫精品成人免费网站 | 一区二区三区精品牛牛 | 老湿影院在线播放 | 18成人免费观看视频 | 在线簧片| 性欧美video另类hd亚洲人 | 日本在线免费播放 | 五月婷婷综合激情 | 免费看片亚洲 | 一级黄色在线观看 | 国产综合色香蕉精品五月婷 | sss亚洲国产欧美一区二区 | 成人免费国产欧美日韩你懂的 | 在线播放你懂的 | 国产区1| 亚洲欧美日韩一区超高清 | 久久免费网 | 欧美曰韩 | 97色女 | 最近资源中文字幕4 | 色天使亚洲综合在线观看 |