第5章 排序与查找 PART A 《可视化计算》.

Slides:



Advertisements
Similar presentations
人间美地 ─ 蝶韵阁. ~ 蝶 韵 阁 ~ 位桃园大溪镇,三峡交流道下去 12 分钟车程 住着潇洒的朱大哥、毛毛夫妻一家 还有 自由飞翔的蓝鹊、飞鹰、松鼠 一群悠闲采蜜翩翩飞舞的凤蝶 更惊讶的是一对珍贵的娇客 ─ 蜂蛾 那根长长的吸管是大自然的奇迹 蜂蛾已让我们惊艳不已 但 ─ 还有更多的美丽与惊奇、、、.
Advertisements

彰化縣和美鎮 和仁國民小學 本土語言教育暨 台灣母語日訪視 簡 報. 一. 學校概況 校地面積 校地面積廣達三公頃 學生活動空間寬廣!
數學社群 教學分享 和平國小 陳淑渟老師 數學社群 教學分享 和平國小 陳淑渟老師. 小一常發生的 學習困難 定位板的應用 序數的學習 困難與教學 突破 主題大綱.
健康.安全年 製作 : 黃靜怡. 安全第一,我想,這是一句大家都耳熟能詳的話吧,說安全, 簡單的說,就是注意自己、眼睛要看、耳朵要聽,不要莽莽 撞撞的,安全是大家所期望的,而父母總是常常掛念我們, 就是希望我們能安全,畢竟,孩子是父母一輩子的牽掛,會 擔心我們的,往往就是關心我們的人,每個人都希望自己做.
【大願文教基金會】園藝治療師 黃盛璘督導、王麗玲執行. 年齡在 2 足歲以上 18 歲以下,經醫學中 心或區域醫 院鑑定為 重度、極重度 身心障礙,不具行動能 力、且不能自理生活,並持有身心障礙 手冊的新北市居民。 八里愛心教養院~服務對象.
第二十九课 致儿子书 张之洞.
如何陪伴孩子度過 高三歲月.
把人的生命写在教育的旗帜上 了解一个案件 欣赏一篇散文 学习一种理念 感悟一个故事.
文亭淘宝城销售政策及租金政策 版权声明: 本文仅供客户内部使用,版权归北京和美行房地产经纪公司山东分公司所有,未经北京和美行房地产经纪公司山东分公司书面许可,不得擅自向其它任何机构和个人传阅、引用、复制和发布报告中的部分或全部内容。
酸鹼食物對人體的影響性.
六大原因造成 現代人身體酸性化.
第八章 互换的运用.
報告書名:父母會傷人 班級:二技幼四甲 姓名:吳婉如 學號:1A2I0034 指導老師:高家斌
【2008年高考重庆卷】A.当冰雪皑皑之际,唯独梅花昂然绽放于枝头,对生命充满希望和自信,教人精神为之一振。
7.4 用矩阵初等行变换 解线性方程组 主要内容: 一.矩阵的行初等变换 二.用行初等变换求逆矩阵 三.用矩阵法求线性方程组.
景区讲解常用方法.
與櫻花有約 櫻花開放時間 櫻花前線 賞花便當 京都機場(附近) 夜櫻 哲學之道.
營利事業所得稅查核準則 相關概念介紹 南區國稅局 新營分局 林俊標 各位學員大家好:
大綱 一、設立科別 二、課程規劃原則 三、科目與學分數表 四、新課綱課程架構 五、新課綱課程規劃 (1)一般科目 (2)專業科目
台塑石化 與 全國 之 財務分析 :企管二甲、乙 班級 指導 :楊雪蘭 老師 :第六組 組別 組員
班級愛心小護士訓練 臺南市東區勝利國小 健康中心.
媽,我們真的不一樣 青少年期與中年期 老師: 趙品淳老師 組員: 胡珮玟4A1I0006 馬菀謙4A1I0040
项目四 营业税 山东经贸职业学院 财政金融系.
敬业·创业·乐业 ——我的成长之路 赵谦翔.
引導者的角色 組別:第5組 4A1I0003 劉芷媛 4A1I0004 陳安琪 4A1I0014 陳佳瑩 4A1I0046 葉倢茹
四年七班親師會 自信學習,健康成長.
人間美地─ 蝶韻閣 ..
醫療旅遊.
社會發展學系 簡 介.
人物小传:杨嘉嵋,1975年出生,国家 重点四川大学本科毕业,中国传媒大学博士毕业,现为上海政法学院讲师。多次发表学术论文:《试论社会主义法治的目标和现代法治精神的培育》发表于钦州师范高等专科学校校报2000年04期,《西部在引进,利用外资中应重视的问题及对策》发表于四川师范学院学报2000年05期,《试论毛泽东的刑法思想》发表于达县师范高等专科学校学报2001年01期,《美国著名主持人的十点共性》发表于中国广播电视学刊2007年08期,《我国电视法治节目的现状与提升》发表于新闻战线2008年08期。
情緒與壓力管理─背部舒緩 指導老師:彭易璟 第六組組員:會資三乙 499A0047 謝宛霖 會資三乙 499A0019 吳汶諭
第二章 语用的主要要素分析 第一节 语境 第二节 预设 第三节 角色 第四节 视角.
从从容容中考去.
美洲集团散拼项目分享 李维迪.
美麗的星空 陳弦希製作.
性別刻板印象.
初三8班(上) 期末总结班会.
初三(上) 期末总结班会.
班級:二幼三甲 姓名:郭小瑄 、 詹淑評 學號:1A2I0029 、1A2I0025
一週菜單設計.
指導老師:楊淑娥 組別:第一組 成員:劉怡萱4a0i0066 吳珮瑜4a0i0070 林秋如4a0i0075 陳婉婷4a0i0076
改革开放给我们带来的变化 系别:11商务流通系 班级:物流四班 组员:物四男生组.
組員:4A140013張瓊云 4A1I0039石宜芬 4A1I0909許峻綱 指導老師:王立杰老師
大村國小 尋根之旅.
那年我參加瑞士巴塞爾博覽會, 除了接單做貿易,還零售賣品, 以擴大出口商品的影響。
指導老師:陳韻如 姓名:吳宜珊 學號:4A0I0911 班級:幼保二乙
中國醫藥大學 北港分部簡報.
西安国际港务区 入区企业相关地方税收 知识培训
學 號:997I0010、997I0024 組 員:洪韋鈴、王婷婷 日 期: 指導老師:王立杰 老師
傳統童玩遊戲創新 組別:第八組 班級:幼保二甲 組員: 4A0I0005柯舒涵 4A0I0011謝孟真
全面推廣政府服務流程改造 行政院研究發展考核委員會  主任委員 宋餘俠 102年7月17日.
第四章 时间序列的分析 本章教学目的:①了解从数量方面研究社会经济现象发展变化过程和发展趋势是统计分析的一种重要方法;②掌握时间数列编制的基本要求;③理解和掌握水平速度两方面指标的计算及运用④理解和掌握长期趋势分析和预测的方法。 本章教学重点:现象发展的水平指标和速度指标。 本章教学难点:现象变动的趋势分析。
公司法(六) 股份有限公司 1.
空間向量 朱泰吉 蔡宇翔 張力夫 莊孟霏.
指導老師:陳韻如 班級:幼保二甲 姓名:林靜宜 學號:4A0I0033
歡樂大派對 六年七班 第一組 自然成果發表會.
課程名稱:資料結構 授課老師:_____________
排序 Sorting.
第十章 排序與搜尋.
Sorting 排序 Bubble Sort O(n2) Insert Sort Selection Sort Quick Sort
如何赢一个机械键盘
債之標的 楊智傑.
CH2 家庭經濟與消費 貳、家庭經濟之管理.
北一女中 資訊選手培訓營 遞迴、河內塔與merge sort Nan.
數學遊戲二 大象轉彎.
本教學投影片係屬教科書著作之延伸,亦受著作權法之保護。
資料結構 老師:李崇明 助教:楊斯竣.
银川社保网上申报 宁夏人力资源和社会保障 网上服务大厅操作
日本的蜻蜓.
异常交易监管等监察业务培训 大连商品交易所 监察部 2018年4月.
Presentation transcript:

第5章 排序与查找 PART A 《可视化计算》

学习目标 如何在计算机中进行排序? 排序算法有那些分类? 如何实现常用的排序算法? 查找与排序有何关系? 查找算法有哪些分类? 如何实现常用的查找算法?

何为排序? 学习中的排序: 在一些教课书中,会将涉及到的所有术语排成索引,作为附录,方便读者在需要时查找 图书馆工作人员的重要工作,就是把归还的书,插入适当的书架、层次、位置, 方便读者查阅 社会中排序: 会议代表名单的排序(按姓氏笔画); 联大会议的发言顺序(按国家名称字母排序)

计算机如何进行排序? 从”混沌”到有序:排序自身也是一种应用,同时也为快速的查找提供必要的准备 在计算机科学中,排序(sorting)是研究最多的问题之一 基本排序算法有5类: 插入排序,例如,直接插入排序,二分插入排序等; 交换排序,例如,冒泡排序,快速排序等; 选择排序,例如,选择排序,推排序等 归并排序,例如,归并排序,多相归并排序等 分布排序,例如,桶排序,基数排序等

排序术语和实现策略 自然的(natural) 如果某种排序算法对有序的数据排序速度较快(工作量变小),对无序的数据排序速度却较慢(工作变量大),这种算法被称为自然排序算法 如果数据已接近有序,就需要考虑选用自然的排序算法

排序术语和实现策略 稳定的(stable) 如果能保持它认为相等的数据的前后顺序,这种算法被称为稳定排序算法 稳定的排序算法可按主、次关键字对数据进行排序,例如,按照姓氏和名字排序。 在具体实现时,就是先按主关键字排序,再按次关键字排序

排序术语和实现策略 内部排序和外部排序 待排数据全部在内存中的排序方法被称为内部排序,待排数据在磁盘、磁带和其它外存中的排序方法被称为外部排序 本节涉及的排序算法,全部针对内部排序进行讨论

排序术语和实现策略 关键字排序(Key sort) 如果要对某班级学生的期末成绩表进行排序,表中给出了每个学生的学号、姓名、单科成绩和总成绩等项目 按什么来排序?所选结果,就是关键字 本章所有案例中,只考虑关键字字段,而先将信息的其他内容一概略去

排序术语和实现策略 数字化排序(digitized sort) 在排序过程中,可以按数值大小排序,有时候需要按字符来排序,有时候需要按照时间的迟早来排序 实际上,计算机内的所有数据,无论属于哪种类型数据,都可以转换成数字(二进制或十进制)表达 所以排序本身可以抽象为对数字进行排序

如何在RAPTOR中实现排序 排序算法测试的数据来源 不仅可以节省用户与算法的交互时间 而且可以适当扩大数据集合,验证算法的效率 请回顾第2章提及的随机数生成和存储,以及使用文件输入数据的方法 不仅可以节省用户与算法的交互时间 而且可以适当扩大数据集合,验证算法的效率

直接插入排序 直接插入排序与整理扑克牌的过程非常类似 为了确定正确的插入位置,一般从左向右将摸上来的牌与手中已有的牌逐一比较 第1张牌没有必要整理 以后每次从牌堆(无序区)的最上面摸出1张牌并插入左手牌(有序区)中正确的位置上 为了确定正确的插入位置,一般从左向右将摸上来的牌与手中已有的牌逐一比较

直接插入排序 假设data.txt文件中存放着待排序的记录R[] ,则R[]可以看成是一个长度为n的待排数组 首先从data.txt文件中保存的数组R[]读入一个数据到a[1],生成一个有序数组 由于文件中的数组R[]呈无序状态,从i=2起至i=n为止,依次将R[i]插入当前的有序数组a[1..i-1]中 最后生成含n个记录的有序数组

插入排序main子图

插排look_for_position子图

插排move_to_new_position子图

桶排序 桶排序的思想源于信件分拣 在现实应用中,是把[0,1)的数值划分为n个大小相同的子区间,每一子区间可以看作是一个桶 由于同一桶内的记录其关键字不尽相同,所以必须采用关键字比较的排序方法(通常用插入排序)对每个桶进行排序 然后依次将各非空桶内的记录连接(收集)起来即可

桶排序main子图

桶排序的实现说明 简单的设计就是直接利用random()函数产生待排数据 很显然,这个算法离不开上一节介绍的插入排序 将随机数小数后的第一位为0~9的数字依次放入这10个桶内 很显然,这个算法离不开上一节介绍的插入排序 使用csv格式的文件保存已排序数据,可以留给其他的应用使用

桶排insert_sort_prepare子图 (I)

桶排insert_sort_prepare子图 (II)

桶排序的输出结果

冒泡排序 冒泡排序(Bubble Sort)的基本概念是: 将被排序的记录数组a[1..n]垂直排列,每个记录a[i]看作是重量为a[i]所存数值的气泡 根据轻气泡不能在重气泡之下的原则,从下往上扫描数组a[]:凡扫描到违反本原则的轻气泡,就使其向上"飘浮“ 如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止

冒泡排序main子图

冒泡算法说明 初始状态: a[1..n]为无序区。 第二次扫描:扫描a[2..n]。扫描完毕时,"次轻"的气泡飘浮到a[2]的位置上……。 最后,经过n-1 趟扫描可得到有序区a[1..n]

冒泡排序 bubble子图

冒泡算法如何改进? 假如待排序列已经是基本有序的(只有两个数字需要换位),如何能够在n-1趟之前,结束排序? 提示:可以将已经排好的数据,有意调换一对,然后使用改进后的算法实验(从文件读入待排数据)

快速排序 快速排序(Quick sort)是在冒泡排序基础上做了适当的改进 快速排序是由C. A. R. Hoare在1962年提出的 它采用了分治的策略,是一种划分交换排序算法 被誉为二十世纪“十大经典算法”之一

快速排序的基本思想 通过一趟排序将要排序的数据分割成独立的两部分 整个排序过程可以递归进行,从而使整个数据变为有序序列 其中一部分的所有数据都比另外一部分的所有数据要小 然后再按此方法对这两部分数据分别进行快速排序 整个排序过程可以递归进行,从而使整个数据变为有序序列

快速排序main子图

快速排序QkSort子图

快速排序QkPass子图

RAPTOR中的快速排序 通过实际运行可知,这里实现的“快速排序”尽管可以改善排序算法的时间复杂性,但由于全局变量问题,实际上的空间复杂性很差 可以考虑使用非递归的实现来完成“快速排序”

归并排序 归并排序也叫合并排序是分治法一个非常典型的应用 归并排序法是将两个或更多个有序表合并成一个新的有序表 如果是将两个有序表合并成一个有序表,被称为2-路归并

归并排序main子图

归并排序input子图(I)

归并排序input子图(II)

归并算法实现的说明 待排的两路数据存放在一个文件中,文件中的头两个数据,分别是两路数据的个数(可以不等长); 在得到线形表的长度后,再用两个数组a[]、b[]保存待排数据 第一个排序循环过程是对两个数组的元素逐个进行比对,并输出较小的数据元素; 第二个循环过程是在比对输出完成后,仍有一个线形表的数据尚未输出完毕,所以再将有剩余元素的数组进行输出

归并排序merge子图(I)

归并排序merge子图(II)

排序算法的分析 冒泡排序显然最容易实现对已经存在的无序线形表进行排序,所以最为最常见; 插入排序对于随机产生的无序数据,可以实现实时排序; 归并排序的前提是存在两个以上已经排序的线形表; 桶排序则适用于可以进行分类的数据排序; 快速排序则是最能体现时间复杂性优化的排序算法,但要关注其在不同的实现环境中,可能因空间复杂性所带来的问题

排序算法的分析 稳定性分类 算法名称 时间复杂性 空间复杂性 稳定排序 冒泡排序 O(n^2) O(1) 插入排序 桶排序 O(n) O(k) 空间 合并排序 O(nlogn) O(n) 空间 不稳定排序 快速排序 最坏O(n^2)

End of ch5-1