1.快速排序

//By LYLtimvoid swap(int *a, int *b)
{int t = *a;*a = *b;*b = t;
}void QSort(int l, int r)
{int lp = l, rp = r, m = (l + r) >> 1;while (lp < rp) {while (a[lp] < a[m]) lp++;while (a[rp] > a[m]) rp--;if (lp <= rp)swap(&a[lp++], &a[rp--]);}if (l < rp) QSort(l, rp);if (lp < r) QSort(lp, r);
}

C语音标准库函数qsort用法

1 int cmp(const void *a,const void *b) {
2     return ( *(int*)a - *(int*)b );
3 }
4 qsort(a, n, sizeof(int), cmp);

详见:http://www.cplusplus.com/reference/cstdlib/qsort

2.归并排序

//By LYLtimvoid merge(int start, int mid, int end)
{int    pl, pr, p = start,len1 = mid - start + 1,len2 = end - mid,left[len1], right[len2];for (pl = 0; pl < len1; pl++) left[pl] = a[start+pl];for (pr = 0; pr < len2; pr++) right[pr] = a[mid+1+pr];pl = pr = 0;while (pl < len1 && pr < len2)if (left[pl] < right[pr]) a[p++] = left[pl++];else a[p++] = right[pr++];while (pl < len1) a[p++] = left[pl++];while (pr < len2) a[p++] = right[pr++];
}void sort(int start, int end)
{if (start < end) {int mid = (start + end) >> 1;sort(start, mid);sort(mid+1, end);merge(start, mid, end);}
}

3.希尔排序

//By LYLtim
void ShellSort(int a[], unsigned n)
{unsigned gap, i, j;for (gap = n >> 1; gap > 0; gap >>= 1)for (i = gap; i < n; i++)for (j = i - gap; j >= 0 && a[j] > a[j + gap]; j -= gap)swap(&a[j], &a[j + gap]);
}

转载于:https://www.cnblogs.com/LYLtim/archive/2011/08/12/2135947.html

排序算法模板(C语言版)相关推荐

  1. 小白学六大排序算法(C语言版)

    今天在csdn刷blink的时候,刷到一个冒泡排序的吐槽,看了看评论区,发现不少人分不清选择排序和冒泡排序,笔者想了一下,发现这两个排序确实相似度蛮高的,所以总结了c语言里涉及到六个排序算法,笔者才疏 ...

  2. c语言动画原理,动画详解十大经典排序算法(C语言版)

    排序算法是程序员必备的基础知识,弄明白它们的原理和实现很有必要.本文中将通过非常细节的动画展示出算法的原理,配合代码更容易理解. 概述 由于待排序的元素数量不同,使得排序过程中涉及的存储器不同,可将排 ...

  3. 十种经典排序算法精粹(c语言版本)

    下面给出这段时间我苦心研究验证过的十种经典排序算法的C语言版本,即下面的排序算法: 插入排序,shell排序,冒泡排序,快速排序,选择排序,堆排序,归并排序,桶排序,基数排序和计数排序.整理出来以作备 ...

  4. 数据结构-排序算法(c语言实现篇)

    数据结构-排序算法(c语言实现篇) 排序算法是非常常用的算法,从介绍排序的基本概念,到介绍各种排序算法的思想.实现方式以及效率分析.最后比较各种算法的优劣性和稳定性. 1 排序的概念及应用 1.1 排 ...

  5. 常见排序算法(C语言实现)

    常见排序算法(C语言实现) 文章目录 常见排序算法(C语言实现) 一.插入排序 二.希尔排序 三.选择排序 四.堆排序 五.冒泡排序 六.快速排序 七.归并排序 一.插入排序 void insertS ...

  6. 蓝桥杯之算法模板题 Python版

    蓝桥杯之算法模板题 Python版 文章目录 蓝桥杯之算法模板题 Python版 线段树 DP 动态规划 dp, LIS ** 01背包 完全背包 多重背包 混合背包 分组背包 区间DP 一.什么是区 ...

  7. 二叉树计算叶子节点c语言报告,二叉树计算叶子节点的算法(数据结构)C语言版...

    <二叉树计算叶子节点的算法(数据结构)C语言版>由会员分享,可在线阅读,更多相关<二叉树计算叶子节点的算法(数据结构)C语言版(1页珍藏版)>请在人人文库网上搜索. 1.* H ...

  8. python选择排序算法图解_简单选择排序算法(C语言详解版)

    该算法的实现思想为:对于具有 n 个记录的无序表遍历 n-1 次,第 i 次从无序表中第 i 个记录开始,找出后序关键字中最小的记录,然后放置在第 i 的位置上. 例如对无序表{56,12,80,91 ...

  9. 典型排序算法(C语言实现)

    2019独角兽企业重金招聘Python工程师标准>>> <数据结构(C语言版)>的最后一次实验作业(排序),要求如下: 数据结构实验5:排序 要求: 1.直接插入排序: ...

  10. 排序算法总结(Python版)

    经典排序算法总结与实现 经典排序算法在面试中占有很大的比重,也是基础,为了未雨绸缪,这次收集整理并用Python实现了八大经典排序算法,包括冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序, ...

最新文章

  1. BZOJ2743 [HEOI2012]采花
  2. php语言三个数从小到大排序,求教输入5个数,从小到大排序 的C语言程序?
  3. javaweb学习总结(十八)——JSP属性范围
  4. linux挂载fc存储有超级坏块_Nand Flash基础知识与坏块管理机制的研究
  5. trie树和后缀树的应用
  6. android开发入门与实践_我的新书《Android App开发入门与实战》已经出版
  7. Mac上运行windows,你还在用双系统or虚拟机?
  8. [翻译]Monocular Visual Odometry using OpenCV
  9. 线程间的通信之wait和notify的使用
  10. 三菱伺服电机选型技巧
  11. SSM框架的原理和运行流程
  12. 【机器学习】 吴恩达机器学习作业 ex1 python实现+Matlab实现
  13. Cookie用法大全
  14. 不合适学计算机的人,想学计算机,这三类人并不合适!
  15. 苹果系统虚拟机无usb服务器,Mac上Vmware虚拟机无法识别USB Key怎么办?Mac虚拟机无法识别USB Key解决方法...
  16. 重磅推荐 | 我精选的15个电子书下载网站!
  17. 华为S5700_交换机_基础管理配置
  18. 2015年全部企业校园招聘情况+薪资水平!
  19. 小米8样张彩色噪点问题分析
  20. 游戏制作中的大宝剑---常用的数据结构与算法

热门文章

  1. Smarty foreach
  2. windowsXP用VNC客户端连接centos6桌面后再用tsclient连接windows2003/2008桌面
  3. 2008高考零分作文---大事与小事
  4. MONGODB 数据库文件读取的优化
  5. Handler 基本用法--线程间传值
  6. 数据库性能优化—全局优化思路
  7. 【LeetCode-面试算法经典-Java实现】【054-Spiral Matrix(螺旋矩阵)】
  8. node-inspector使用方法
  9. swift textView字数限制,textView点击完成隐藏键盘
  10. C++ const_cast用法