排序算法模板(C语言版)
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语言版)相关推荐
- 小白学六大排序算法(C语言版)
今天在csdn刷blink的时候,刷到一个冒泡排序的吐槽,看了看评论区,发现不少人分不清选择排序和冒泡排序,笔者想了一下,发现这两个排序确实相似度蛮高的,所以总结了c语言里涉及到六个排序算法,笔者才疏 ...
- c语言动画原理,动画详解十大经典排序算法(C语言版)
排序算法是程序员必备的基础知识,弄明白它们的原理和实现很有必要.本文中将通过非常细节的动画展示出算法的原理,配合代码更容易理解. 概述 由于待排序的元素数量不同,使得排序过程中涉及的存储器不同,可将排 ...
- 十种经典排序算法精粹(c语言版本)
下面给出这段时间我苦心研究验证过的十种经典排序算法的C语言版本,即下面的排序算法: 插入排序,shell排序,冒泡排序,快速排序,选择排序,堆排序,归并排序,桶排序,基数排序和计数排序.整理出来以作备 ...
- 数据结构-排序算法(c语言实现篇)
数据结构-排序算法(c语言实现篇) 排序算法是非常常用的算法,从介绍排序的基本概念,到介绍各种排序算法的思想.实现方式以及效率分析.最后比较各种算法的优劣性和稳定性. 1 排序的概念及应用 1.1 排 ...
- 常见排序算法(C语言实现)
常见排序算法(C语言实现) 文章目录 常见排序算法(C语言实现) 一.插入排序 二.希尔排序 三.选择排序 四.堆排序 五.冒泡排序 六.快速排序 七.归并排序 一.插入排序 void insertS ...
- 蓝桥杯之算法模板题 Python版
蓝桥杯之算法模板题 Python版 文章目录 蓝桥杯之算法模板题 Python版 线段树 DP 动态规划 dp, LIS ** 01背包 完全背包 多重背包 混合背包 分组背包 区间DP 一.什么是区 ...
- 二叉树计算叶子节点c语言报告,二叉树计算叶子节点的算法(数据结构)C语言版...
<二叉树计算叶子节点的算法(数据结构)C语言版>由会员分享,可在线阅读,更多相关<二叉树计算叶子节点的算法(数据结构)C语言版(1页珍藏版)>请在人人文库网上搜索. 1.* H ...
- python选择排序算法图解_简单选择排序算法(C语言详解版)
该算法的实现思想为:对于具有 n 个记录的无序表遍历 n-1 次,第 i 次从无序表中第 i 个记录开始,找出后序关键字中最小的记录,然后放置在第 i 的位置上. 例如对无序表{56,12,80,91 ...
- 典型排序算法(C语言实现)
2019独角兽企业重金招聘Python工程师标准>>> <数据结构(C语言版)>的最后一次实验作业(排序),要求如下: 数据结构实验5:排序 要求: 1.直接插入排序: ...
- 排序算法总结(Python版)
经典排序算法总结与实现 经典排序算法在面试中占有很大的比重,也是基础,为了未雨绸缪,这次收集整理并用Python实现了八大经典排序算法,包括冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序, ...
最新文章
- BZOJ2743 [HEOI2012]采花
- php语言三个数从小到大排序,求教输入5个数,从小到大排序 的C语言程序?
- javaweb学习总结(十八)——JSP属性范围
- linux挂载fc存储有超级坏块_Nand Flash基础知识与坏块管理机制的研究
- trie树和后缀树的应用
- android开发入门与实践_我的新书《Android App开发入门与实战》已经出版
- Mac上运行windows,你还在用双系统or虚拟机?
- [翻译]Monocular Visual Odometry using OpenCV
- 线程间的通信之wait和notify的使用
- 三菱伺服电机选型技巧
- SSM框架的原理和运行流程
- 【机器学习】 吴恩达机器学习作业 ex1 python实现+Matlab实现
- Cookie用法大全
- 不合适学计算机的人,想学计算机,这三类人并不合适!
- 苹果系统虚拟机无usb服务器,Mac上Vmware虚拟机无法识别USB Key怎么办?Mac虚拟机无法识别USB Key解决方法...
- 重磅推荐 | 我精选的15个电子书下载网站!
- 华为S5700_交换机_基础管理配置
- 2015年全部企业校园招聘情况+薪资水平!
- 小米8样张彩色噪点问题分析
- 游戏制作中的大宝剑---常用的数据结构与算法