1.冒泡排序

  1. void BubbleSort(int a[],int len)
  2. {int tmp;
  3. for (int i=0; i<n-1; i++)
  4. {
  5. int flag = FALSE;
  6. for(int j=n-1;j>i;j--)
  7. if(a[j-1]>a[j])
  8. {
  9. tmp = a[j-1];
  10. a[j-1] = a[j];
  11. a[j] = tmp;
  12. flag = TRUE;
  13. }
  14. if(flag == FALSE)
  15. return;
  16. }
  17. }

2.简单选择排序

  1. void SelectSort(int a[],int len)
  2. {int tmp;
  3. for(int i=0; i<n-1; i++)
  4. {
  5. int min = i;
  6. for(j=i+1; j<len; j++)
  7. if(a[j]<a[min])
  8. min=j;
  9. if(min!=i)
  10. {
  11. tmp = a[min];
  12. a[min] = a[i];
  13. a[i]=tmp;
  14. }
  15. }
  16. }

3.快速排序

  1. void QuickSort(int a[],int low,int high)
  2. {
  3. if(low<high)
  4. {
  5. int pivotpos = Partition(a,low,high);//枢轴
  6. QuickSort(a,low,pivotpos-1);
  7. QuickSort(a,pivotpos+1,high);
  8. }
  9. }
  10. int Partition(int a[],int low,int high)
  11. { //一趟划分操作
  12. int pivot = a[low];
  13. while(low<high)
  14. {
  15. while(low<high && a[high]>=pivot) --high;
  16. a[low]=a[high];
  17. while(low<high && a[high]<=pivot) ++low;
  18. a[high]=a[low];
  19. }
  20. a[low]=pivot;
  21. return low;
  22. }

4.堆排序

  1. void HeadAdjust(int a[],int k,int len)
  2. { //将元素k为根的子树进行调整
  3. a[0]=a[k];
  4. for(int i=2*k; i<=len; i*=2)
  5. {
  6. if(i<len&&a[i]<a[i+1])
  7. i++;
  8. if(a[0]>=a[i])
  9. break;
  10. else
  11. {
  12. a[k]=a[i];
  13. k=i;
  14. }
  15. }
  16. a[k]=a[0];
  17. }
  18. void BuildMaxHeap(int a[],int len)
  19. {
  20. for(int i=len/2; i>0; i--)//i从[n/2]到1,反复调整堆
  21. HeadAdjust(a,i,len);
  22. }
  23. void HeapSort(int a[],int len)
  24. {
  25. int tmp;
  26. BuildMaxHeap(a,len);
  27. for (int i=len; i>1; i--)
  28. {
  29. tmp = a[i];
  30. a[i] = a[1];
  31. a[1]=tmp;
  32. HeadAdjust(a,1,i-1);
  33. }
  34. }

常用排序算法(C语言)的更多相关文章

  1. 我们一起来排序——使用Java语言优雅地实现常用排序算法

    破阵子·春景 燕子来时新社,梨花落后清明. 池上碧苔三四点,叶底黄鹂一两声.日长飞絮轻. 巧笑同桌伙伴,上学径里逢迎. 疑怪昨宵春梦好,元是今朝Offer拿.笑从双脸生. 排序算法--最基础的算法,互 ...

  2. 常用排序算法的python实现和性能分析

    常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...

  3. Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...

  4. 转载部长一篇大作:常用排序算法之JavaScript实现

    转载部长一篇大作:常用排序算法之JavaScript实现 注:本文是转载实验室同门王部长的大作,找实习找工作在即,本文颇有用处!原文出处:http://www.cnblogs.com/ywang172 ...

  5. Java 常用排序算法/程序员必须掌握的 8大排序算法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...

  6. 面试中常用排序算法实现(Java)

    当我们进行数据处理的时候,往往需要对数据进行查找操作,一个有序的数据集往往能够在高效的查找算法下快速得到结果.所以排序的效率就会显的十分重要,本篇我们将着重的介绍几个常见的排序算法,涉及如下内容: 排 ...

  7. 常用排序算法java实现

    写在前面:纸上得来终觉浅.基本排序算法的思想,可能很多人都说的头头是到,但能说和能写出来,真的还是有很大区别的. 今天整理了一下各种常用排序算法,当然还不全,后面会继续补充.代码中可能有累赘或错误的地 ...

  8. Python实现常用排序算法

    Python实现常用排序算法 冒泡排序 思路: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完 ...

  9. 第四百一十五节,python常用排序算法学习

    第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...

随机推荐

  1. 从零开始Blazor Server(9)--修改Layout

    目前我们的MainLayout还是默认的,这里我们需要修改为BootstrapBlazor的Layout,并且处理一下菜单. 修改MainLayout BootstrapBlazor已经自带了一个La ...

  2. Spring提供的API实现文件上传

    Spring为我们提供了文件上传接口MultipartRequest及其实现类StandardMultipartFile StandardMultipartFile是StandardMultipart ...

  3. 修改后台传过来的json数据中对象的属性

    前言 今天在实习中遇到的一个小问题,后端传过来的一个json数据结构,但是对象中的属性名跟我需要的不一样(因为我是渲染echarts中的数据,属性名要一样) 这是后台传过来的数据: 需求是我需要把属性 ...

  4. 【面试题】纯css实现三角形,你知道如何实现吗?

    纯css实现三角形 点击打开视频教程 <template> <div id="app"> <!-- 纯css实现三角形书写 --> <di ...

  5. Docker0网络及原理探究

    个人观点:Docker网络通信在容器编排.集群部署中具有举足轻重的地位,(玩docker不懂docker0那就......玩不透哇)本篇分析Docker网络,并通过启动几个容器来探究Docker网络及 ...

  6. 在cmd中使用doskey来实现alias别名功能

            作为一枚网络工程师,经常就是面对一堆黑框框,也是就是终端.不同操作系统.不同厂家的目录,功能相同但是键入的命令又大不相同,这些差异化容易让脑子混乱.比如华为.思科.H3C.锐捷的设备, ...

  7. django_day07

    django_day07 django form组件 form组件的定义 class RegForm(forms.Form): user = forms.CharField(label='用户名') ...

  8. 使用 Spring Boot Admin 监控应用状态

    程序员优雅哥 SpringBoot 2.7 实战基础 - 11 - 使用 Spring Boot Admin 监控应用状态 1 Spring Boot Actuator Spring Boot Act ...

  9. Linux安装RabbitMQ教程(文件下载地址+安装命令+ 端口开放 + 用户创建 +配置文件模板+端口修改)

    前言 1.安装RabbitMQ前需先安装erlang, 且两者需要版本对应, 否则无法正常启动RabbitMQ (本教程使用22.0.7版本的erlang和3.8.6版本的Rabbitmq) 版本对应 ...

  10. HCIA-STP原理与配置

    STP协议生成树协议: 为了保证网络可靠,所以在组网时需要设置冗余链路和设备,从而在物理结构上形成结构,又因为交换机的工作特点导致二层网络中产生广播风暴和MAC地址表震荡现象,影响用户体验. 广播风暴 ...