999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

辯證內含豐富的算法舉例

2017-02-25 07:10:08王春枝王立柱
計算機教育 2017年1期
關鍵詞:排序

王春枝 , 王立柱

(湖北工業大學 計算機學院, 湖北 武漢 430068)

辯證內含豐富的算法舉例

王春枝 , 王立柱

(湖北工業大學 計算機學院, 湖北 武漢 430068)

快速排序和堆排序是程序設計中的典型算法,但不易理解,因為它們內含深刻的辯證思想。文章詳細論述這些算法中的辯證思想,旨在幫助學生高屋建瓴地把握這些算法。

快速排序;堆排序;二叉樹;遍歷

0 引 言

快速排序和堆排序看似線性問題,實則是非線性問題,而且綜合運用多種方法才能求解。以快速排序為例,它需要綜合運用線性連續存儲、二叉樹、前序遍歷和中序遍歷的概念。綜合運用這些概念,包含著豐富的辯證思想。這些算法一般是數據結構中的典型算法,但很多教材特別是語言教材都在數據結構之前講授這些內容,給學生的理解帶來很大困難。我們有必要具體解釋它們固有的辯證內容。

1 快速排序算法

快速排序算法的基本思想是利用線性連續存儲結構,在二叉樹的前序遍歷基礎上建立二叉樹,最終的有序序列是這棵二叉樹的中序序列[1]。

以數組元素[49,38, 65, 97, 76, 13, 27, 50]為例,實施快速排序。

第1趟排序:以首元素49為基準,把數組元素分為左右兩部分,左部分不大于基準,右部分不小于基準,如圖1(a)所示?;鶞?9相當于根,左右兩部分[27,38, 13]和[76, 97, 65, 50]相當于左右子樹的節點。圖1(b)是它的拓撲結構。

圖1 第1趟排序

第2趟排序:以49的左子樹元素序列的首元素27為基準,將其分作左右兩部分[13]和[38], 27是左子樹的根,如圖2(a)所示,圖2(b)是它的拓撲結構。

圖2 第2趟排序

這時,49的左子樹中序序列已經有序。

第3趟排序:以49的右子樹元素序列的首元素76為基準,將其分作左右兩部分[50,65]和[97], 76是右子樹的根,如圖3(a)所示,圖3(b)是它的拓撲結構。

圖3 第3趟排序

第4趟排序:以76的左子樹元素序列的首元素50為基準,將其劃分為左右兩個子集,左子集為空,50為子樹的根,如圖4(a)所示,圖4(b)是它的拓撲結構。圖4(b)的中序序列顯然是一個有序序列。

圖4 第4趟排序

快速排序完畢。

2 堆排序算法

堆排序的關鍵是堆。堆是一種按照層次順序連續存儲的、特殊的完全二叉樹,一般分大根堆和小根堆。我們以小根堆為例,小根堆的特點是每一個結點的鍵都不大于其左右孩子的鍵,或者說,從根到葉結點的任何路徑上的鍵都是非減的,如圖5(a)所示。

堆還是一種用非線性手段提高存取速度的優先級隊列,它的主要操作是刪除和插人。

小根堆的刪除是首刪,刪除的是最小元素,這個元素是二叉樹的根,即存儲中的首元素。步驟如下:

(1)刪除存儲結構中第一個元素,然后將最后一個元素移到首位,如圖5(b)所示。

(2)刪除后結構可能不再是堆(但根的左右子樹還是堆),需要向下調整為堆。調整的方法是將首元素即根不斷與其左右孩子的較小者比較,若大于后者,則交換,直至恢復堆秩序,如圖5(c)所示。

圖5 小根堆的刪除過程

向下調整算法的實質是向下起泡排序:在線性結構中,向下起泡排序是前驅和后繼比較,但在堆結構中,前驅和后繼的關系擴展為雙親和孩子的關系,而且后繼不止一個,需要擇其小者。

小根堆的插人是尾插,步驟如下:

(1)將新的數據元素插人數據的尾部,如圖6(b)所示。

(2)插人后的數據可能不再是堆,需要向上調整為堆。調整的方法是將插人的數據元素不斷與其雙親比較,若小于雙親,則交換,直至恢復堆秩序,如圖6(c)所示。

向上調整算法的實質是向上起泡排序:在線性結構中,向上起泡排序是后驅和前繼比較,但在堆結構中,后驅和前繼的關系擴展為孩子和雙親的關系。

堆排序步驟如下[2]:

圖6 小根堆的插入過程

(1)模仿堆類的插人Insert方法,將數組調整為小根堆。因為只有一個元素的數組為堆,所以從數組第2個元素到最后一個元素掃描,每掃描一個元素,相當于向堆中插人一個元素,這時的數組可能不再是小根堆,需要將數組向上調整為小根堆。

(2)將數組首元素和尾元素調換,數組元素個數減1(相當于刪除首元素);然后將縮小后的數組向下調整為小根堆。

(3)重復步驟(2),直到數組元素個數為0。

需要注意的是,利用小根堆排序,結果是降序序列。如果需要升序序列,可以仿照小根堆,建立大根堆。

3 結 語

所謂一個對象復雜,難以理解,是因為這個對象包含太多相互聯系和相互作用的因素。用恩格斯的話講:“事物是互相作用著的,并且在大多數情形下,正是忘記了這種多方面的運動和相互作用,阻礙我們的自然科學家去看清最簡單的事物”[3]。要正確地理解和把握這些因素,就需要辯證思維,因為辯證思維不是別的,正是復雜對象中相互聯系、相互作用的規律在頭腦中的反映。

[1] 王立柱, 王春枝. 計算機科學與編程導論[M] 北京: 清華大學出版社, 2015: 119-122.

[2] 王立柱. 數據結構與算法[M]. 北京: 華章出版社, 2013: 129-131.

[3] 張建林, 王立柱. 馬克思恩格斯哲學原著英漢對照選讀[M]. 天津: 天津人民出版社, 2009: 179.

(編輯:宋文婷)

1672-5913(2017)01-0159-03

G642

湖北省教育廳項目“程序設計能力培養體系建設與實踐”(2015294);全國高等學校計算機教育研究會項目 “程序設計能力培養課程體系建設與實踐”(MXF2016-2-5,ER2016004)。

王春枝,女,教授,研究方向為計算機應用、計算機網絡和計算機遠程教育,chunzhiwang@ vip.163.com。

猜你喜歡
排序
排排序
排序不等式
作者簡介
名家名作(2021年9期)2021-10-08 01:31:36
作者簡介
名家名作(2021年4期)2021-05-12 09:40:02
作者簡介(按文章先后排序)
名家名作(2021年3期)2021-04-07 06:42:16
恐怖排序
律句填空排序題的備考策略
節日排序
刻舟求劍
兒童繪本(2018年5期)2018-04-12 16:45:32
作者簡介(按文章先后排序)
名家名作(2017年2期)2017-08-30 01:34:24
主站蜘蛛池模板: 国产在线自在拍91精品黑人| 5388国产亚洲欧美在线观看| 成人在线综合| 亚洲日本精品一区二区| 99热这里只有精品国产99| 在线观看免费人成视频色快速| 久久99国产综合精品女同| 亚洲激情区| 中国国产高清免费AV片| 国产在线无码av完整版在线观看| 最新日韩AV网址在线观看| 欧美激情视频二区| 免费精品一区二区h| 在线无码av一区二区三区| 亚洲品质国产精品无码| 伊人精品视频免费在线| 亚洲午夜福利精品无码不卡| 在线国产综合一区二区三区| 国产成人免费手机在线观看视频 | 国产成人综合久久精品尤物| 一本一本大道香蕉久在线播放| 91九色国产在线| 美女潮喷出白浆在线观看视频| 免费激情网址| 国产精品极品美女自在线网站| 亚洲成人网在线播放| 国产亚洲精品在天天在线麻豆 | 亚洲自拍另类| 91啪在线| 欧美激情视频二区三区| 日韩高清在线观看不卡一区二区| 亚洲日本精品一区二区| 亚洲综合婷婷激情| 亚洲精品成人7777在线观看| 亚洲综合第一区| 亚洲黄网在线| 欧美、日韩、国产综合一区| 亚洲无线观看| 在线中文字幕网| 激情无码视频在线看| 91精品免费高清在线| 亚洲Av激情网五月天| 国产精品网拍在线| 成人综合网址| 九月婷婷亚洲综合在线| lhav亚洲精品| av尤物免费在线观看| 亚洲三级a| 日韩欧美在线观看| 国产亚洲欧美在线中文bt天堂 | 欧美亚洲欧美区| 亚洲成年网站在线观看| 国产一级毛片网站| 尤物视频一区| 国产美女在线观看| 六月婷婷精品视频在线观看| 精品無碼一區在線觀看 | 久久中文电影| 亚洲日本www| 国国产a国产片免费麻豆| 亚洲va在线∨a天堂va欧美va| 免费啪啪网址| jizz在线观看| 香蕉国产精品视频| 国产欧美精品专区一区二区| 91精品免费久久久| 久久精品免费国产大片| 18禁色诱爆乳网站| 国产日韩精品一区在线不卡| 亚洲高清资源| 日韩在线2020专区| 亚洲AV无码久久天堂| 免费在线成人网| 欧美、日韩、国产综合一区| 色噜噜狠狠狠综合曰曰曰| 欧美一级夜夜爽www| 99久久国产综合精品2023| 久久综合九色综合97婷婷| 99精品国产电影| 日韩欧美国产成人| 九色视频最新网址| 国产高清在线精品一区二区三区|