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

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
下面是几种常见的排序算法的封装 封装的冒泡法: void mybubbling_sort(int * a,int n,int size,int (*cmp)(void *,void *)) { int i,j; void * temp = malloc(size); if(temp == NULL) { printf(can not malloc\n); return; } for(i = 0; i n - 1;i++) { for(j = 0; j n - 1 -i;j++) { if(cmp((char *)a + j*size, (char *)a + (j+1)*size) 0) { memcpy(temp,(char *)a + j*size,size); memcpy((char *)a + j*size ,(char *)a + (j+1)*size, size); memcpy((char *)a + (j + 1)*size , temp,size); } } } free(temp);} 下面是几种常见的排序算法的封装 封装的选择排序法 void myselect_sort(void *a,int nmeb ,int size, int (* cmp)(void *,void *)) { int i,j,min; void * temp = malloc(size); if(temp == NULL) { printf(can not malloc\n); return;} for(i = 0; i nmeb - 1;i++) { min = i; for(j = i + 1;j nmeb ;j++) { if(cmp((char *)a + min*size,(char *)a + j*size ) 0) { min = j;}} if(min != i) { memcpy(temp,(char *)a + min*size,size); memcpy( (char *)a + min*size, (char *)a + i*size ,size ); memcpy( (char *)a + i*size , temp, size ); }} free(temp);} 阶段总结 几种常见的排序算法 冒泡排序的特点 选择排序的特点及 本章总结 链表 数据结构与算法初步 常见的排序算法 主要讲述讲述单链表的基本操作,包括插入、删除以及查找 重点讲述冒泡排序和快速排序的特,同时大概了解直接插入排序,希尔排序和选择排序的基本思路 题目 题目:实现对数组{265,301,751,129,937,863,742,694,076,438}进行排序,用快速排序方法来实现。并列出每趟排序的结果 实验目的 考察快速排序算法的基本思路 了解快速排序算法的每趟操作流程 实验分析 建立一个数组,并初始化 进行数据的第一趟快速排序 了解快速排序每趟操作结果,分析排序快速的最快数组类型和最慢数组类型 实验1 导宜科技教育中心 导宜科技教育中心 第4章 几种常见的排序算法 本章目标 本章概述 几种常见排序算法。 本章目标 熟悉常见的查找算法和排序算法 重点 能够里用函数库提供的API进行查找或排序操作 难点 快速排序算法 本章结构 数据结构与算法初步 常见的排序算法 常见的排序算法 冒泡排序 快速排序 直接插入排序 希尔排序 选择排序 堆排序 归并排序 冒泡排序 冒泡排序方法是最简单的排序方法。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后“次轻”的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是“最轻”元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。冒泡排序是稳定的。算法时间复杂度是O(n^2)。 算法描述 21 08 25 49 25 16 21 49 25 25 16 08 21 49 25 25 16 08 21 49 25 25 16 08 21 49 25 25 16 08 21 49 25 25 16 08 初始关键字 第一趟排序 第四趟排序 第二趟排序 第三趟排序 第五趟排序 算法实例如下: 输入n

文档评论(0)

花仙子 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档