浅析排序算法

来源 :无线互联科技 | 被引量 : 0次 | 上传用户:swl3322
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文主要关于4种排序进行了一个简单的讲解,并为每一种排序使用C/C++语言给每种排序算法相应的实现,并在最后比较了每种算法的稳定性以及时间复杂度.看本文的前提是熟悉C/C++程序设计语言。
  关键词:排序;冒泡算法;插入排序;快速排序;选择排序1引言
  随着计算机的不断普及,技术越来越成熟,计算机硬件以及存储设备具有局限性,提供计算机的效率成了程序员特别关注的一方向,其中排序就是其中之一。如何能在最短时间,在最节省内存的情况下,使呈任意序列的数据元素,在最快的时间得到从大到小或从小到大的序列,是程序员一直研究的问题。
  本文主要是简单的讲述一下排序的几种算法,冒泡排序,插入排序,快速排序,选择排序。
  2冒泡排序
  冒泡排序,是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
  算法用C语言的实现如下:
  for(int i=0;i<10;i++){for(int j=i;j<10;j++){if(a[j]  3插入排序
  插入排序的思路简要的描述是:将序列的元素分作有序和无序两类,然后在保持前一类有序的前提下,通过迭代将后一类元素逐一插至前一类中的适当位置。
  插入排序有直接插入排序,折半插入排序,2-路插入排序和希尔排序。这里仅给出直接插入排序的实现。
  算法用C++语言的实现如下:
  void InsertSort(int*p,int n){int temp=0;for(int i=1;ip[i-1]){temp=p[i];p[i]=p[i-1];for(int j=i-2;temp>p[j]&&j>0;j--){p[j+1]=p[j];}p[j+1]=temp;}}}
  4快速排序
  快速排序的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录关键字均比另一部分记录的关键字小,则可分为对这两部分继续进行排序,已达到整个序列有序。
  算法用C语言的实现如下:
  int QuickSock(int*a,int Left,int Right)//算法的核心
  {int Temp=a[Left];while(Left=a[Right])
  {Right--;}a[Left]=a[Right];while(Left  a[Right]=a[Left];}a[Left]=Temp; return Right;}
  void Repeat(int*a,int Left,int Right)
  {if(Left  5选择排序
  选择排序的基本思想是,每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
  算法用C语言的实现如下:
  void SelectSort(int*p,int n){int j=0;int temp=0;for(int k=n;k>0;k--){
   for(int i=0;i  int SelectMinKey(int*q,int m){int temp =q[0];int min=0;for(int i=1;i<=m;i++)
   {if(temp>q[i])temp=q[i];min=i;}}return min;}
  6对比各种排序
  表1
   冒泡排序 插入排序 快速排序 选择排序
  稳定性 稳定 稳定 稳定 不稳定
  时间复杂度 O(n^2) O(n^2) O(n^2) O(n^2)
  
  
  [参考文献]
  [1]严蔚敏,吴伟民,编著.数据结构(C语言版).清华大学出版社,2011年5月.
  [2]邓俊辉,编著.数据结构(C++语言版)(第二版).清华大学出版社,2011年10月.
  [3]Mark Allen Weiss,著.数据结构与算法分析——C语言描述.机械工业出版社,2011年10月.
  [4]百度百科知识.
其他文献
农机安全监理部门肩负着查隐患、纠违章、保安全的重任,当前农机监理工作面临着许多新情况和新问题,迫切要求农机安全监理人员切实转变传统的思想观念、工作方式,以适应新形势、
入冬以来,雾天、雪天将会增多,天冷地滑,道,路行车危险系数加大,为规范机手安全驾驶,避免重特大农机事故的发生,陵县农机局从5个方面加大冬季农机安全管理,保障农机安全形势。
基于Fluent流场仿真分析软件,在定压差条件下,对带有单U形、斜U形以及V形基本节流槽的滑阀阀口开度-流量特性开展了研究,并将其与试验结果进行了对比验证,得出了U形类槽口随
离合器,按照压紧弹簧类型的不同,可以分为周布弹簧式和膜片弹簧式离合器。其技术状况如何,发生故障能否及时诊断和排除,都与安全生产密切相关。现以周布弹簧离合器为例.对离合器常
物业管理是一新兴行业,在我国仅有20年左右的发展历史。随着物业管理实践的深入,社会化、专业化、企业化的物业管理机制的引入,实践中遇到诸多亟待规范和解决的问题,财务管理作为
经济学中有一个著名的“木桶”原理:木桶的最大容量不是由围成木桶的最长木板或平均长度决定的,而是由最短的那一块木板决定的。要最大限度地发挥木桶的效用,就必须着力解决好“
随着油料价格的上涨,油料消耗约占农用运输车使用成本的1/4。因此,节油驾驶技术显得尤为重要。一、保持机车良好的技术状态。当技术状态恶化时,油料消耗大大增加,特别是“三滤器”
近几年来,潍坊市在推进现代农业建设中,积极适应农村生产力发展的客观要求,认真研究发展农业机械化的途径和措施.通过贯彻落实中央两个1号文件精神和《农业机械化促进法》,把
基于动态子结构法建立了高速磨床零部件和整机的实体参数化模型,利用MSC.Patran/Nastran建立了高速磨床机械结构的有限元模型,并对主轴、床身和床身-工作台组合结构进行了模
针对传统拟静力学分析方法未考虑轴承套圈热变形、离心力变形和弹流润滑作用引起轴承内部沟道曲率中心与滚动体中心几何位置关系的变化,难以准确反映轴承动刚度不足的现状,建