Sorting in Linear Time.

Slides:



Advertisements
Similar presentations
1 债券融资业务拓展交流 债券业务部 二 O 一二年二月. 2 目 录  第一部分 债券融资业务概述  第二部分 东兴证券债券融资业务情况介绍及前景展望  第三部分 什么样的企业适合发债  第四部分 债券融资业务合作开发方式及激励探讨.
Advertisements

轴对称(一) 课堂引入 仔细观察下列图片,思考这些图片有什么样 的特点.
创意鄱阳湖— 一种基于无形资源理念开发鄱阳湖的思考 以传奇背景音乐作为开场,体现创意创造传奇 南昌大学 黄细嘉
优化备课和讲课 的思考 黄恕伯
2017/3/12 儿童常见病防治 XX XX XX 公司名称 第一季度工作报告 潍坊市妇幼保健院.
防盜裝置  學生科技探究.
饮食中的平衡 酸 性 食 物 与 碱 性 食 物.
「幼兒園教保活動與課程大綱」 的發展與理念
期末書面報告指定書籍 王鼎鈞回憶錄---昨天的雲
川信-丰盛系列集合资金信托计划 2016年3月.
古文選讀.
农信社信贷产品实务技能提升培训.
7/3/2017 時間管理 此簡報只作為參考,導師可按分隊的需要修改。 此簡報只作為參考,導師可按分隊的需要修改。
职业教育课程改革创新教材 财经法规与会计职业道德.
高齡者道路交通事故特性與道安防制措施 研究計畫報告
是重要的感觉器官,有许多感觉器,具触觉、嗅觉功能,还能感受异性的性信息素。 触角由柄节、梗节和鞭节三部分组成。
项目亮点 融资方为AA级发债主体,是当地唯一的综合平台公司
不会宽容人的人, 是不配受到别人的宽容的。 贝尔奈.
复习回顾 a a×a a×a×a a a×a×a= a×a= 1.如图,边长为a厘米的正方形的面积 为 平方厘米。
复习 什么是结构? 结构是指事物的各个组成部分之间的有序搭配和排列。
植物辨識及分類 呂春森 基隆市立暖暖高級中學 植物辨識及分類 呂春森 基隆市立暖暖高級中學.
第5章 排序与查找 PART A 《可视化计算》.
第三课 闲话“家”常 1.
“华东师大数学系部分老同事活动”(辛卯聚会)记事
第五节 读图表述.
財團法人中華民國證券櫃檯買賣中心 交 易 部 中華民國101年8月
职业教育课程改革创新教材 财经法规与会计职业道德.
管理好种公鸡提高雏鸡质量.
第四章 时间序列的分析 本章教学目的:①了解从数量方面研究社会经济现象发展变化过程和发展趋势是统计分析的一种重要方法;②掌握时间数列编制的基本要求;③理解和掌握水平速度两方面指标的计算及运用④理解和掌握长期趋势分析和预测的方法。 本章教学重点:现象发展的水平指标和速度指标。 本章教学难点:现象变动的趋势分析。
第四章 數列與級數 4-1 等差數列與級數 4-2 等比數列與級數 4-3 無窮等比級數 下一頁 總目錄.
心 肌 梗 死.
長者日 每年 11月第三個星期日 表達對長者的敬意 宣傳關懷長者的訊息.
Chapter 5 迴圈.
課程名稱:資料結構 授課老師:_____________
主讲人: 吕敏 { } Spring 2012 ,USTC 算法基础 主讲人: 吕敏 { } Spring 2012 ,USTC.
Course 4 搜尋 Search.
排序 Sorting.
第十章 排序與搜尋.
Data Structure(資料結構) 授課老師: 蕭志明 助理教授 Ext:6779
啟示錄 人 子 七 教 會 寶 座 七 印 七 號 龍 與 獸 七 碗 巴 比 倫 千 禧 年 前 後 新 耶 路 撒 冷 第9章(第5號)
基數排序 (Radix Sort).
電腦解題─流程圖簡介 臺北市立大同高中 蔡志敏老師.
基數排序法.
Chap3 Linked List 鏈結串列.
如何赢一个机械键盘
北一女中 資訊選手培訓營.
Sorting in Linear Time Michael Tsai 2013/5/21.
一個基于相鄰區塊相似性和動態次編碼簿的低位元率向量量化 圖像壓縮法
第8章 資料排序 資料結構設計與C++程式應用
Definition of Trace Function
蕭志明 老師 Algorithm(演算法) Ext:6779
蕭志明 老師 Algorithm(演算法) /FB:
Teacher: 郭育倫 Mail: 演算法 Teacher: 郭育倫 Mail:
Ogive plot example 說明者:吳東陽 2003/10/10.
C qsort.
算法导论第一次习题课.
一個基于相鄰區塊相似性和動態次編碼簿的低位元率向量量化 圖像壓縮法
10394: Twin Primes ★★★☆☆ 題組:Problem Set Archive with Online Judge
12797: Letters ★★★☆☆ 題組:Problem Set Archive with Online Judge
1757: Secret Chamber at Mount Rushmore
程式設計--Quick Sort 通訊一甲 B 楊穎穆.
第一章 直角坐標系 1-3 函數及其圖形.
一個基于相鄰區塊相似性和動態次編碼簿的低位元率向量量化 圖像壓縮法
推動搖籃的手─製作部門 ﹝西子劇坊﹞ 蔡如歆.
資料結構 老師:李崇明 助教:楊斯竣.
All Sources Shortest Path The Floyd-Warshall Algorithm
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
11621 : Small Factors ★★☆☆☆ 題組:Problem Set Archive with Online Judge
Round prepared by rsabcmoi and tangent
Presentation transcript:

Sorting in Linear Time

7.1 Lower bounds for sorting 本節探討排序所耗用的時間複雜度下限。 任何一個以比較為基礎排序的演算法,排序n個元素時至少耗用Ω(nlogn)次比較。 是以時間複雜度至少為Ω(nlogn)。 但不使用比較為基礎 的排序演算法,在某些情形下可在O(n)的時間內執行完畢。 Sorting in Linear Time

Decision-Tree Model 一個以比較為基礎的排序演算法可以按照比較的順序建出一個Decision-Tree。 每一個從Root到Leaf的路徑都代表一種排序的結果。 任何一個以比較為基礎排序n個元素的演算法,所對應的Decision-Tree高度至少有Ω(nlogn)。 Sorting in Linear Time

Decision-Tree Model a1:a2 >  a1:a3 a2:a3 >  >  Eg. (a1 a2 a3) (9 2 6) a1:a2 >  a1:a3 a2:a3 >  >  <1,2,3> a1:a3 <2,1,3> a2:a3  >  > <1,3,2> <3,1,2> <2,3,1> <3,2,1> 按照比較的順序跟結果,可以建造出一個Decision-Tree。 Root是最先比較的,按照比較的結果不同, 接下來會選擇比較的對象也不見得相同。 此範例圖為一個3元素的Decision-Tree。 Internal nodes是代表比較的對象, 一開始先比較a1跟a2,如結果是a1>a2則緊接比較a1跟a3, 反之則比較a2跟a3。其餘類推。Leaf則為排序演算法的結果。 如果(a1 a2 a3)為(9 2 6)時,則對應的Leaf為<2,3,1>。 Sorting in Linear Time

Decision-Tree Model 證明:因為可能有n!種可能的排序結果,故對應的Decision tree至少有n!個leaf nodes。而高度為h的二元樹最多有2h個leaf nodes。 因此h  log2(n!)  Θ(nlogn)。(後者由Stirling’s approximation得證:n!>(n/e)n) Heapsort與Mergesort是asymptotically optimal之比較排序法。 Quicksort一般而言並不是Asymptotically optimal。 但其執行效率平均而言較Heapsort還有Mergesort還好。 故Asymptotically optimal僅是理論分析上的最佳。 Sorting in Linear Time

7.2 Counting Sort Counting Sort (記數排序法) 不需要藉由比較來做排序。 必須依賴一些對於待排序集合中元素性質的假設。(如:所有待排序元素均為整數,介於1到k之間) 時間複雜度:O(n+k) 主要的關鍵在於,統計1到k之間每個數值出現過幾次,然後想辦法將排序好的數列輸出。 將k視為常數時,此是一個線性時間的排序演算法。 Sorting in Linear Time

Input: A[1..n], where A[j]∈{1,2,…,k} Output:B[1..n], sorted CountingSort(A,B,k) { for i = 0 to k do C[i]0 for j = 1 to length[A] do C[A[j]]C[A[j]]+1 for i = 1 to k do C[i]C[i]+C[i-1] for j = length[A] downto 1 do B[C[A[j]]]A[j] C[A[j]]C[A[j]]-1 } 第一個迴圈將C[0..k]初始化為全0陣列。 第二個迴圈將C[j]變成j在A裡面出現的次數。 第三個迴圈將C[j]變成1..j在A裡面出現的次數。 第四個迴圈作輸出的動作。 詳細的例子請參考下一頁。 Sorting in Linear Time

k=6 1 2 3 4 5 6 7 8 A: 3 6 4 1 3 4 1 4 1 2 3 4 5 6 2nd loop C: 2 2 3 1 1 2 3 4 5 6 3rd loop 2 2 4 7 7 8 Sorting in Linear Time

4th loop 1 2 3 4 5 6 7 8 1 2 3 4 5 6 1st iteration B: C: 4 2 2 4 6 7 8 2nd iteration B: C: 1 4 1 2 4 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 3rd iteration B: C: 1 4 4 1 2 4 5 7 8 …… 1 2 3 4 5 6 7 8 1 2 3 4 5 6 8th iteration B: C: 1 1 3 3 4 4 4 6 2 2 4 7 7 Sorting in Linear Time

7.3 Radix Sort Radix Sort(基數排序法)無需利用元素間的比較排序。 Sorting in Linear Time

Radix Sort 關鍵想法:利用記數排序法由低位數排到高位數。 最後排百位數 先排個位數 再排十位數 329 457 657 839 436 720 355 720 355 436 457 657 329 839 720 329 436 839 355 457 657 329 355 436 457 657 720 839 最後排百位數 先排個位數 再排十位數 Sorting in Linear Time

此處使用的stable sort如果使用Counting Sort則每個Iteration只需花Θ(n+10)的時間。 Radix-Sort(A,d) { for i = 1 to d do use stable sort to sort A on digit i } 此處使用的stable sort如果使用Counting Sort則每個Iteration只需花Θ(n+10)的時間。 因此總共花費O(d(n+10))的時間。 如果d是常數,則Radix Sort為一個可以在Linear time完成的排序演算法。 所謂的Stable sort是指Sorting過之後,如果ai跟aj數值(or key)相同, 則排序後此兩個數值的前後次序並不會被改變。 Quicksort,Heapsort均不是Stable sort。 在前面所舉的Counting-sort經過一些修改可以作為合適使用的Stable sort。 Sorting in Linear Time

7.4 Bucket Sort 當元素均勻分布在某個區間時,Bucket sort平均能在O(n)的時間完成排序。 假定要排序n個元素A[1..n]均是介於[0,1]之間的數值。 準備n個籃子(bucket),B[1..n],將元素x依照x所在的區間放進對應的籃子:即第 個籃子 。 Sorting in Linear Time

Bucket Sort 元素放進籃子時,使用Linked list來儲存,並利用插入排序法排序。 只要依序將Lined list串接起來,即得到已排序的n個元素。 Sorting in Linear Time

紅色虛線串起的即是最後排序好的List A B 1 .76 1 .05 .07 2 .07 2 3 .36 3 .22 .25 .29 4 .74 5 6 .95 6 7 .22 7 .66 8 .05 8 .74 .76 9 .25 9 10 .66 10 .95 紅色虛線串起的即是最後排序好的List Sorting in Linear Time

時間複雜度分析 假定分到第i個籃子的元素個數是ni。 最差情形:T(n) =O(n) + =O(n2). 平均情形:T(n) = O(n) + = O(n) + = O(n) 的証明請參考課本 Sorting in Linear Time