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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

程序员必知8大排序3大查找(一)

發(fā)布時間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序员必知8大排序3大查找(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

每天都在叫囂自己會什么技術,什么框架,可否意識到你每天都在被這些新名詞、新技術所迷惑,.NET、XML等等技術固然誘人,可是如果自己的基礎不扎實,就像是在云里霧里行走一樣,只能看到眼前,不能看到更遠的地方。這些新鮮的技術掩蓋了許多底層的原理,要想真正的學習技術還是走下云端,扎扎實實的把基礎知識學好,有了這些基礎,要掌握那些新技術也就很容易了。

?

要編寫出優(yōu)秀的代碼同樣要扎實的基礎,如果排序和查找算法學的不好,怎么對程序的性能進行優(yōu)化?廢話不多說,本文要介紹的這些排序算法就是基礎中的基礎,程序員必知!


?

1、直接插入排序

?

1)基本思想:在要排序的一組數(shù)中,假設前面(n-1) [n>=2] 個數(shù)已經(jīng)是排

好順序的,現(xiàn)在要把第n個數(shù)插到前面的有序數(shù)中,使得這n個數(shù)

也是排好順序的。如此反復循環(huán),直到全部排好順序。

2)實例

?

?

2、希爾排序(也稱最小增量排序)

?

1)基本思想:算法先將要排序的一組數(shù)按某個增量dn/2,n為要排序數(shù)的個數(shù))分成若干組,每組中記錄的下標相差d.對每組中全部元素進行直接插入排序,然后再用一個較小的增量(d/2)對它進行分組,在每組中再進行直接插入排序。當增量減到1時,進行直接插入排序后,排序完成。

2)實例:

?

?

3、簡單選擇排序

?

1)基本思想:在要排序的一組數(shù)中,選出最小的一個數(shù)與第一個位置的數(shù)交換;

然后在剩下的數(shù)當中再找最小的與第二個位置的數(shù)交換,如此循環(huán)到倒數(shù)第二個數(shù)和最后一個數(shù)比較為止。

2)實例:

?

?

4、堆排序

?

1)基本思想:堆排序是一種樹形選擇排序,是對直接選擇排序的有效改進。

堆的定義如下:具有n個元素的序列(h1,h2,...,hn),當且僅當滿足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1)(i=1,2,...,n/2)時稱之為堆。在這里只討論滿足前者條件的堆。由堆的定義可以看出,堆頂元素(即第一個元素)必為最大項(大頂堆)。完全二叉樹可以很直觀地表示堆的結(jié)構(gòu)。堆頂為根,其它為左子樹、右子樹。初始時把要排序的數(shù)的序列看作是一棵順序存儲的二叉樹,調(diào)整它們的存儲序,使之成為一個堆,這時堆的根節(jié)點的數(shù)最大。然后將根節(jié)點與堆的最后一個節(jié)點交換。然后對前面(n-1)個數(shù)重新調(diào)整使之成為堆。依此類推,直到只有兩個節(jié)點的堆,并對它們作交換,最后得到有n個節(jié)點的有序序列。從算法描述來看,堆排序需要兩個過程,一是建立堆,二是堆頂與堆的最后一個元素交換位置。所以堆排序有兩個函數(shù)組成。一是建堆的滲透函數(shù),二是反復調(diào)用滲透函數(shù)實現(xiàn)排序的函數(shù)。

2)實例:

初始序列:46,79,56,38,40,84

建堆:

?

交換,從堆中踢出最大數(shù)

剩余結(jié)點再建堆,再交換踢出最大數(shù)

?

依次類推:最后堆中剩余的最后兩個結(jié)點交換,踢出一個,排序完成。

?

5、冒泡排序

?

1)基本思想:在要排序的一組數(shù)中,對當前還未排好序的范圍內(nèi)的全部數(shù),自上而下對相鄰的兩個數(shù)依次進行比較和調(diào)整,讓較大的數(shù)往下沉,較小的往上冒。即:每當兩相鄰的數(shù)比較后發(fā)現(xiàn)它們的排序與排序要求相反時,就將它們互換。

2)實例:

?

?

未完,后續(xù)接著寫另外3大排序,還有3大查找……

轉(zhuǎn)載于:https://www.cnblogs.com/spring5/archive/2012/05/04/2485236.html

總結(jié)

以上是生活随笔為你收集整理的程序员必知8大排序3大查找(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。