常见集中的排序算法实现
来源:互联网 发布:阿里云域名备案教程 编辑:程序博客网 时间:2024/05/05 21:48
总结一下常见的排序算法,用代码实现
一、插入排序
算法思想:该算法假设有数组A,元素个数为N,假设前i-1个数都是排好序的,那么第i个输需要从i-1个数开始依次朝前比较,从而找到合适的位置插入,而该位置后面的数需要依次向后移动一个位置。
代码如下:(个人的编程风格)
#include<stdio.h>typedef int INT;typedef void VOID;typedef short SHORT;typedef long LONG;typedef static STATIC;typedef char CHAR;/************************************* author : ***明 date : 2013/12/11description: 插入排序 IN : piData IN :iLength OUT : **************************************/VOID InsertSort(INT *piData, INT iLength){ INT i = 0; INT j = 0; INT iKey = 0; for (j = 1; j < iLength; j ++) { iKey = *(piData + j); i = j -1; while((i >= 0) && (*(piData + i) > iKey)) { *(piData + i + 1) = *(piData + i); i = i - 1; } *(piData + i + 1) = iKey; }}
二、交换排序
算法思想:该算法假设有数组A,数组元素个数为N,首先从前N个数中选出最小的一个放在第一个位置,然后从剩余的N-1个数中选出最小的数放在第二个位置,依次循环,最后完成排序
代码如下:
/************************************* author : **明 date : 2013/12/11description : 选择排序 IN : piData IN : iLength OUT : **************************************/VOID ExchangeSort(INT *piData, INT iLength){ INT i = 0; INT j = 0; INT iMin = *piData; for (i = 0; i < (iLength - 1); i++) { for (j = i + 1; j < iLength; j++) { if (iMin > (*(piData + j))) { iMin = *(piData + j); *(piData + i) = iMin; } } }}
三、冒泡排序
算法思想:该算法假设有数组A,数组元素个数为N,拿第一个数和第二个数比较,如果第一个数比第二个大,则交换顺序,否则位置不变,然后依次拿第二个数和第三个比较,则遍历N个数后则保证最大的一个数在下标最大的位置。接着遍历前N-1个数,保证第二大的数在下标第二大的位置,以此类推。
代码如下:
/************************************* author : **明 date : 2013/12/15description : 冒泡排序 IN : piData IN : iLength OUT : **************************************/VOID BubbleSort(INT *piData, INT iLength){ INT i = 0; INT j = 0; INT iTemp = 0; for (i = 0; i < (iLength - 1); i++) { for (j = 1; j < iLength - i; j++) { if(*(piData + j - 1) > *(piData + j)){iTemp = *(piData + j - 1);*(piData + j - 1) = *(piData + j);*(piData + j) = iTemp;} } }}
四、归并排序
算法思想:假设有两堆牌面朝上地放在桌上,每一堆都是排好序的,最小牌在最上面。选取顶上两张较小的一张,将其取出后,面朝下地放到输出堆中,(该堆中顶端会露出一张新的牌)。重复这个操作,直到其中一堆中牌放入为空,然后将另一队直接放入输出堆中即可。
0 0
- 常见集中的排序算法实现
- 常见的集中排序算法
- 集中常见的排序算法
- 集中常见的排序算法总结
- java实现的集中排序算法
- 常见排序算法的实现
- 常见的排序算法实现
- 常见排序算法的实现
- 常见排序算法的实现
- 常见排序算法的实现
- 常见排序算法的实现
- 常见排序算法的实现
- 常见排序算法的实现
- 常见的排序算法实现
- 常见排序算法的实现
- 常见排序算法实现
- .Net中实现常见的排序算法
- 面试必备:常见排序算法的实现
- 第五次装系统反思录
- 自然图像抠图/视频抠像技术发展情况梳理(image matting, alpha matting, video matting)--计算机视觉专题1
- 12.11
- python 内存泄露的诊断
- oracle的执行计划
- 常见集中的排序算法实现
- js客户端判断文件大小限制上传
- C#中委托和方法学习心得
- java中线程中的sleep的使用(计数器)
- Python中函数的定义以及形参实参小结
- 责任链模式
- 广州传智播客学Java推荐就业吗?
- 【面试题二十三】从上往下打印二叉树
- CloudStack 4.3 API 开发指南