查找与排序大学课程
1.4 查找和排序 居太亮,2007年9月 电子科技大学通信学院 一、查找 1、顺序查找 2、折半查找(二分查找) 3、分块查找 5、哈希查找 二、排 序 1、简单选择排序 设有序列:{ 5, 4, 12, 20, 27, 3, 1 } 排序过程为: ☆算法分析 2、直接插入排序 3、冒泡排序(bubble sort) 冒泡排序例: 初始状态 [65 97 76 13 27 49 58] 第1趟(j=1 ~ 6) [65 76 13 27 49 58] 97 第2趟(j=1 ~ 5) [65 13 27 49 58] 76 97 第3趟(j=1 ~ 4) [13 27 49 58] 65 76 97 第4趟(j=1 ~ 3) [13 27 49] 58 65 76 97 第5趟(j=1 ~ 2) [13 27] 49 58 65 76 97 第6趟(j=1) [13] 27 49 58 65 76 97 4、快速排序 举例:设序列为{46,55,13,42,94,5,17,70} 5、归并排序 排序方法的比较和选择 作业: 1、P.67页 26 题; 2、P.67页 27 题; 3、P.67页 28 题; ▲插入运算为从后向前比较:先取Ri与Ri-1比较,若RiRi-1,则Ri-1后移一个位置,再取下一个元素Ri-2与Ri比较,依此类推,直到找到 插入位置,就在该位置插入元素。 temp=data[i]; while(temp data[j] j=0){ data[j+1]=data[j]; j--; } data[j+1]=temp; /*找插入位置*/ /*元素后移一个位置*/ /*取下一个元素比较*/ /*插入元素*/ void linear_insert_sort(int list[], int n) { int i, j, temp; for(i=1; in; i++){ j=i-1; temp=list[i]; while( temp list[j] j = 0){ list[j+1]=list[j]; j--; } list[j+1]=temp; } } /*从第二个元素开始,每循环一次插入一个元素*/ 例:待排序列: 54 34 17 28 63 92 48 82 75 n-1趟排序依次为: 初始状态: 54 34 17 28 63 92 48 82 75 (i=1,34) 34 54 17 28 63 92 48 82 75 (i=2,17) 17 34 54 28 63 92 48 82 75 (i=3,28) 17 28 34 54 63 92 48 82 75 (i=4,63) 17 28 34 54 63 92 48 82 75 (i=5,92) 17 28 34 54 63 92 48 82 75 (i=6,48) 17 28 34 48 54 63 92 82 75 (i=7,82) 17 28 34 48 54 63 82 92 75 (i=8,75) 17 28 34 48 54 63 75 82 92 ☆算法特点: 简单,容易实现,适于待排元素n 很少或基本有序的情况。 ☆排序效率: 共进行n-1次循环排序,每次可能搬移多个元素。 最好情况:比较次数n-1;移动次数2(n-1) 最坏情况:比较n(n-1)/2;移动 平均:约n2/4 O(n2) ☆稳定性: 稳定
您可能关注的文档
最近下载
- 肌肉骨骼康复学第三版.pptx
- 2025及未来5年中国薰衣草干花市场数据分析及竞争策略研究报告.docx
- 2025ACC专家共识声明:心包炎的诊断和管理解读PPT课件.pptx VIP
- 2023-2024学年安徽省合肥市包河区七年级(上)期中地理试卷.docx VIP
- 市中级人民法院党组书记、院长关于2024年度民主生活会个人对照检视剖析材料.docx VIP
- 花篮拉杆式悬挑脚手架施工技术方案.docx VIP
- 人教版智培学校生活语文五年级上册第5课《什么美》教学设计.doc
- 招录事业编人员政审表.doc VIP
- 企业食堂从业人员管理培训课件.pptx VIP
- 版权产业在2025年市场动态分析及未来五年前景展望报告.docx
原创力文档

文档评论(0)