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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

arraylist从大到小排序_程序猿面试宝典:你该知道的数组排序算法

發布時間:2023/12/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arraylist从大到小排序_程序猿面试宝典:你该知道的数组排序算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通常情況下,我們對數組的操作遠遠不止遍歷判斷大小或者判斷奇偶數這么簡單。比如,當我們需要求一個數組中所有元素的平均值時,操作很簡單,只需要去遍歷這個數組,并將其內部所有元素中存儲的內容進行求和,最后用所有元素內容的和去除以元素個數,就可以得到最終數組的平均值。這個問題很簡單。但是如果我們要求解這個數組中的中位數時,應該怎么做?此時我們來分析下,由于數組中的數值存放順序并不是固定的,因此每個元素中存儲的內容并不一定是按照存儲數值從大到小存放的,也不一定是按照從小到大存放的。因此如果要求解中位數這樣的算法,一定要對數組中的內容進行排序,而數組的排序操作是一種稍微有點難度的運算,因此這一小節的內容請大家開始全神貫注地看一下。(1)冒泡排序法冒泡算法,在傳統的C語言教科書上講的很多,它是一種比較穩定的排序算法。大家在使用這個排序算法的時候,可以從它的名字來聯想一下它的實現形式。一說到冒泡,大家首先想到的是一條小魚在水里游著,并且"布魯布魯"的吐出一串串小氣泡,冒到水面上。其實冒泡排序法也和小于吐泡泡一樣,每次只吐出一個,并且連續不斷地一個接一個吐。冒泡排序算法的中心思想,即是相鄰的兩個數進行比較后根據大小需求交換位置。先從最簡單的兩個元素的數組看起,由此進行舉一反三。假設一個數組內部只有兩個元素"int array = {8, 0};"。對其進行排序時,我們僅需要做一次判斷即可以知道哪個元素大,哪個元素小,假設我們從小到大進行排列,那么排列出的結果就應該是"array = {0, 8};"。再看當有三個元素的數組。假設一個數組內部只有兩個元素"int array = {8, 0, 1};"。那我們還是進行兩兩比較,第一次比較,可以得出數組應該為"array = {0, 1, 8};",也是只需要一次比較就可以完成數組的排序。但如果數組改變一下元素的位置,即"int array = {8, 1, 0};",那么我們再來看一下,第一次兩兩元素比較變成了"array = {1, 0, 8};",因此碰到這種極端情況時,冒泡法一次比較完成不了排序,那么應該進行第二次比較,最終第二次比較我們可以得出結果"array = {0, 1, 8};"再來看看四個元素時候數組的排序,這次我們舉一個極端情況,即將一個從大到小排列的數組變成由小到大的順序排列。數組為"int array = {9, 8, 1, 0};"。那么此時第一次相鄰兩個元素比較可以得出"array = {8, 1, 0, 9};",第二次相鄰元素兩兩比較可以得出"array = {1, 0, 8, 9};",第三次兩兩比較可以得出"array = {0, 1, 8, 9};"。基于上述的分析,我們可以知道,一個數組如果有n個元素需要進行排序時,其排序的極端情況應該是n-1次。具體的排序流程,見圖5-4-1。

圖5-4-1 冒泡排序法的流程因此根據上述分析,我們可以寫出代碼如圖5-4-2所示。

圖5-4-2 冒泡法排序接下來,我們將程序改裝一下,讓它在每一步相鄰兩個元素比較的過程打印出來,如圖5-4-3所示。我們可以看到,越大的元素會經由交換慢慢"浮"到數列的頂端(升序或降序排列),就如同水里的小金魚吐出的泡泡一串串慢慢浮出水面,故名"冒泡排序"。

圖5-4-3 冒泡法排序單步打印 (2)選擇排序選擇排序,俗稱"硬著頭皮排序",當然這個"硬著頭皮排序"是我給它取的名字,因為它是最最直觀的排序方法,完美詮釋了"暴力美學"這四個字。要理解選擇排序,先想象一下小學上體育課時,老師是怎么排列隊伍的。先從小朋友里面隨便拉一個老師認為最矮的同學出來,讓他做排頭,然后依次拿其他的同學和他比較,如果比他高,就放到其后面去,比他矮就放到前面,接著再來目測第二個,以此類推。當然上面這段話是描述的體育老師內心思路。而我們對數組排序的時候,同樣可以使用這種方式。我們可以先指定一個排頭兵,假設我們要進行從小到大排列時,那我們先假設第一個元素為數組中最小的元素,接著分別去和剩余的其它元素比較,如果發現比它小的,那么將其自己和那個元素互換,用這種方式,只需要遍歷完整個數組,就可以把最小的元素放到首個元素的位置了。如圖5-4-4所示。

圖5-4-4 選擇排序做一次遍歷比較圖5-4-4中,我們通過第一次的遍歷比較,將最小的元素排列到了數組的最左端,而接下來要做的,只需要一次將剩余的9個元素進行比較,找出最小值,再放到0右邊,以此類推,最后我們可以寫出如圖5-4-5所示的選擇排序程序。

圖5-4-5 選擇排序法對于數組的排序算法,我們目前就講述這兩種,其實還有很多現代的比較快速的排序算法,我們以后再說。這兩種排序算法對于很多第一次接觸C語言的讀者來說,還是比較難理解的,因此還是需要多花功夫多多演練。

總結

以上是生活随笔為你收集整理的arraylist从大到小排序_程序猿面试宝典:你该知道的数组排序算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲永久免费av | 欧美被狂躁喷白浆精品 | 超碰免费公开 | 中国av在线| 黄色裸体片 | 香蕉色综合 | 欧美成人精品一区二区 | av黄色片| 无码少妇一级AV片在线观看 | 特黄一级大片 | 久久久久久18 | 国产乱妇无码大片在线观看 | 日本aⅴ片| 欧美激情图 | 成人动漫免费观看 | 粗大黑人巨茎大战欧美成人免费看 | 成人免费av | 黄视频网站在线看 | 免费的黄色的网站 | 日韩av自拍偷拍 | 欧美大黄 | 看黄色的网址 | 免费看色 | 狠狠精品干练久久久无码中文字幕 | 日韩欧美麻豆 | 欧美日本 | 男人日女人在线观看 | 亚洲国产综合久久 | av二区在线| 国产对白自拍 | 黄色国产在线 | 日本一区二区三区视频在线 | 欧美精品v国产精品v日韩精品 | 91午夜在线观看 | 国产成人综合精品 | 黄色片网站在线观看 | 欧美日韩在线观看免费 | 欧美久久久一区二区三区 | 欧美精品在线看 | 久久美女免费视频 | 久久黄色片 | 欧美一级二级三级 | 天天操天天插 | av国产免费| 欧美影院在线观看 | 激情久久av| 久久精品97 | 91超碰国产在线 | 成人综合一区 | 欧美日韩在线视频播放 | 天堂网2020 | 激情xxx | 日韩欧美成| 久久伊人精品视频 | 精品在线视频免费观看 | 不卡的av在线播放 | 丁香婷婷在线观看 | 麻豆视频一区二区 | 超碰在线人人草 | av电影在线观看不卡 | 欧美国产日韩综合 | 日韩一级影视 | 亚洲爽爆 | 亚洲精选在线观看 | 特黄视频在线观看 | 500福利视频导航 | 成人做受黄大片 | 鲁一鲁一鲁一鲁一av | 俺来也在线视频 | 精品无码久久久久久久久成人 | 看黄色一级视频 | 国产传媒精品 | 欧美成人精品一区二区综合免费 | 三级av在线免费观看 | 中文字幕亚洲日本 | 大尺度激情吻胸视频 | 国产精品99精品久久免费 | 日韩乱码人妻无码中文字幕 | 国产一区久久久 | 草逼免费视频 | 女人被狂躁60分钟视频 | 91超薄肉色丝袜交足高跟凉鞋 | 国产精品黄色大片 | 91精品国产自产91精品 | 久久久久久亚洲中文字幕无码 | 国产 欧美 在线 | 伊人网伊人网 | 操操日日 | 精品久久人人妻人人做人人 | 国产精品蜜臀av | 99久草| 法国空姐电影在线观看 | 超碰av在线 | 自拍偷拍2019 | 久久夜色精品国产噜噜亚洲av | 在线久久| 亚洲欧美日韩一区在线观看 | 国产456| 波多野结衣视频在线观看 |