第4章--几种常见的排序算法.ppt

第4章--几种常见的排序算法

讲师:朱兴林;本章目标;本章结构;常见的排序算法;冒泡排序;21;;快速排序;21; ;#include stdio.h ?void quick_sort(int *a,int start,int end); ?int main() { int a[5] = {4,2,6,8,1}; quick_sort(a,0,4); int i; for(i = 0; i 5;i++) { printf(%d\n,a[i]); } ? return 0;} void quick_sort(int *a,int start,int end) { int i = start,j = end; int key = a[start]; //在起始位置挖坑,等待被填 while(start end) {while(start end) { if(a[end] = key) { a[start] = a[end]; //把a[end]挖出来,填到a[start]坑里 start++; ;算法分析: 快速排序是一个递归过程; 利用序列第一个记录作为基准,将整个序列划分为左右两个子序列。只要是关键字小于基准记录关键字的记录都移到序列左侧; 快速排序的趟数取决于递归树的高度。 如果每次划分对一个记录定位后, 该记录的左侧子序列与右侧子序列的长度相同, 则下一步将是对两个长度减半的子序列进行排序, 这是最理想的情况 ;直接插入排序;#include stdio.h void directinsert_sort(int * a,int n); ?int main() { int a[5] = {5,7,3,1,2}; directinsert_sort(a,5); int i; for(i = 0; i 5;i++) { printf(%d\n,a[i]); }} void directinsert_sort(int * a,int n) { int i,j,temp;; for(i = 1; i n;i++) { temp = a[i]; for(j = i-1 ;j = 0 temp a[j];j--) a[j+1] = a[j]; //往后挪动 ? a[j+1] = temp; } } ? ;选择排序;算法实例;希尔排序;算法实例;t 1;算法实例;算法分析 开始时 gap 的值较大, 子序列中的记录较少, 排序速度较快 随着排序进展, gap 值逐渐变小, 子序列中记录个数逐渐变多,由于前面大多数记录已基本有序, 所以排序速度仍然很快 Gap的取法有多种。 shell 提出取 gap = ?n/2?,gap = ?gap/2?,直到gap = 1。;下面是几种常见的排序算法的封装;下面是几种常见的排序算法的封装;阶段总结;本章总结;题目 题目:实现对数组{265,301,751,129,937,863,742,694,076,438}进行排序,用快速排序方法来实现。并列出每趟排序的结果 实验目的 考察快速排序算法的基本思路 了解快速排序算法的每趟操作流程 实验分析 建立一个数组,并初始化 进行数据的第一趟快速排序 了解快速排序每趟操作结果,分析排序快速的最快数组类型和最慢数组类型

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档