C语言8大经典排序算法代码和详细注释
来源:互联网 发布:直播声音软件 编辑:程序博客网 时间:2024/05/19 22:44
1.冒泡排序
void bubbleSort(int *a, int an){ for(int i=0;i<an;i++) for(int j=i+1;j<an;j++) if(a[i]>a[j]) swap(a,i,j);}
2.插入排序
像扑克摸牌一样,插入即表示将一个新的数据插入到一个有序数组中,并继续保持有序。例如有一个长度为N的无序数组,进行N-1次的插入即能完成排序;第一次,数组第1个数认为是有序的数组,将数组第二个元素插入仅有1个有序的数组中;第二次,数组前两个元素组成有序的数组,将数组第三个元素插入由两个元素构成的有序数组中……第N-1次,数组前N-1个元素组成有序的数组,将数组的第N个元素插入由N-1个元素构成的有序数组中,则完成了整个插入排序。
以下面5个无序的数据为例:
65 27 59 64 58 (文中仅细化了第四次插入过程)
第1次插入: 27 65 59 64 58
第2次插入: 27 59 65 64 58
第3次插入: 27 59 64 65 58
第4次插入: 27 58 59 64 65
void insertSort(int *a, int an){ int i,j,key; for(i=0;i<an;i++) { key = a[i]; j = i-1; while(j>=0 && a[j]>key) { a[j+1] = a[j]; j--; } a[j+1] = key; }}
3.归并排序
归并排序是把序列递归地分成短序列,递归出口是短序列只有1个元素(认为直接有序)或者2个序列(1次比较和交换),然后把各个有序的段序列合并成一个有序的长序列,不断合并直到原序列全部排好序。可以发现,在1个或2个元素时,1个元素不会交换,2个元素如果大小相等也没有人故意交换,这不会破坏稳定性。那么,在短的有序序列合并的过程中,稳定是是否受到破坏?没有,合并过程中我们可以保证如果两个当前元素相等时,我们把处在前面的序列的元素保存在结果序列的前面,这样就保证了稳定性。所以,归并排序也是稳定的排序算法
void mergeSort(int *a, int low, int high){}
0 0
- C语言8大经典排序算法代码和详细注释
- 【每日算法】C语言8大经典排序算法(2)
- 【每日算法】C语言8大经典排序算法(1)
- 【每日算法】C语言8大经典排序算法(2)
- 8大经典排序算法及其实现代码
- 8大经典排序算法
- c语言中6大排序算法实现和解析
- 根据Merge Sort原理, 自己实现的归并排序算法+详细注释+代码(C#,C/C++) [分享]
- 堆排序 完整代码与详细注释 C++语言实现
- C语言几种经典排序代码
- c语言经典排序算法(8种-含源代码)
- C语言经典算法:冒泡排序
- c语言的经典算法-冒泡排序
- 经典排序算法(C语言实现)
- C语言中三大经典的排序算法
- C语言经典排序算法大全
- C语言经典编程之排序算法
- C语言--冒泡排序法(详细注释)
- 根据概率抽奖(无奖品数量) -- Java实现
- 创建很简单的maven项目
- react之redux新手入门
- Linux JDK 安装与卸载(Redhat)
- 【软考】算法-冒泡
- C语言8大经典排序算法代码和详细注释
- Mask-RCNN中的损失函数
- http的post和get请求方式
- 图说二叉树添加数据原理以及遍历原理
- 【Java重构系列】重构31式之搬移方法
- list 迭代器的简单实现
- SurfaceFlinger Layer Clip and Draw---大密度注释
- Mac系统显示和隐藏文件
- 初学安卓-商品展示