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. Pulsar Summit Asia 2020 中文专场议题出炉!

    关于 Apache Pulsar Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息.存储.轻量化函数式计算为一体,采用计算与存储分离架构设计,支 ...

  2. java学习第三天常用类.day11

    工具类如何设计,在开发中有两种设计: 工具方法:静态方法的使用 非静态的方法使用: 使用单列模式,为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 保证在整个应用中某一个类有且只有一个实例(一 ...

  3. Excel 运算符(四):引用运算符

    引用运算符用于将单元格区域合并运算,包括:冒号.,逗号. 空格. : 运算 :运算符用于定义一个连续的数据区域,例如"A1:B3",表示从 A1 到 B3 的 6 个单元格. 并集 ...

  4. 教程 - 深度探讨在 Vue3 中引入 CesiumJS 的最佳方式

    目录 1. 你应该先知道的基础知识 1.1. CesiumJS 的库构成 1.2. 选择 Vite3 和 pnpm 的理由 1.3. 使用 External 模式引入静态库 - 不打包静态库 1.4. ...

  5. [NOI2021] 密码箱 (平衡树,连分数,Stern-Brocot 树,矩阵)

    题面 记忆犹新 题解 f f f 函数值给得非常明显,一看就给人一种熟悉感--这不是连分数吗? 众所周知,连分数有个递推公式,即 p i = a i p i − 1 + p i − 2 q i = a ...

  6. CF1442D Sum (动态规划,线段树分治)

    ( 宋 体 字 看 起 来 真 舒 服 ) _{_{(宋体字看起来真舒服)}} (宋体字看起来真舒服)​​ 题 面 ( 洛 谷 翻 译 ) 题面_{_{(洛谷翻译)}} 题面(洛谷翻译)​​ 给定 n ...

  7. Html飞机大战(二):面向对象绘制背景

    好家伙, 我们为了后续工作的顺利进行,我试着把每一个模块封装为对象 但冻手之前还是要构思一下 我们把天空封装成一个类: 1.来搞一手简单的对象分析:  属性方面的都好理解 来说明一下方法: (1) p ...

  8. PHP8中match新语句的操作方法

    PHP8 新出的一个语法很好用,就是 match 语句.match 语句跟原来的 switch 类似,不过比 switch 更加的严格和方便 原来的 switch 语句代码如下: 1 function ...

  9. KingbaseES 绑定变量窥探机制

    概述: 对于数据严重倾斜的,极端如以下例子,不同的传入值,可能执行计划不同,制定执行计划时,就要求知道变量的值.对于绑定变量的情况,我们知道Oracle 有 _optim_peek_user_bind ...

  10. 004-GoingDeeperConvolutions2014(googLeNet)

    Going Deeper with Convolutions #paper 1. paper-info 1.1 Metadata Author:: [[Christian Szegedy]], [[W ...