冒泡排序、插入排序、选择排序--C语言实现
来源:互联网 发布:宜家值得买 知乎 编辑:程序博客网 时间:2024/06/05 20:09
最近打算抽时间复习数据结构,怎奈琐事繁杂,难以抽出时间,但又定下每天计划,故,第一天就写个最简单的几种排序算法的C语言实现吧。
记得当时,最初接触排序,学会的第一个方法就是冒泡排序,这个也是我觉得最简单的排序方法。
简单描述就是,先比较k1和k2,然后比较k2和k3,...,kn-1和kn。
一遍比较下来,就确定了 n - i - 1个元素中最大的元素。
在执行n-1次即可。
//冒泡排序void popSort(int * a){ for(int i = 0;i < LEN;i++){ for(int j = 0;j < LEN - i - 1;j++){ if(a[j] > a[j+1]) { int tmp = a[j+1]; a[j+1] = a[j]; a[j] = tmp; }}}//打印结果myprint(a);}
第二个是插入排序,插入排序是模拟我们打扑克调牌的过程,假设左手拿牌,右手摸牌。右手摸了第一张牌之后,左手拿着。摸了第二张牌后,再插入左手的牌中之前,需要和左手中的牌比较,选择查到后面还是前面。后面再摸牌就一样了。
//插入排序void insertSort(int * a){ for(int i = 1;i < LEN;i++) { int flag = a[i]; int j = i-1; while(j >= 0 && a[j] > flag) { a[j+1] = a[j]; a[j] = flag; j--; } } //打印结果myprint(a);}
第三个是选择排序,选择排序也是比较好理解的排序方法,它就是选择给定范围内的所有中的最小(最大)的一个放在最小(最大)的应该放的位置。
//选择排序void selectSort(int * a){ for(int i = 0;i < LEN;i++) { int min = i;//在i到LEN-1之间选择最小的和i的互换位置for(int j = i;j < LEN;j++){ if(a[j] < a[min]) min = j;}int tmp = a[i];a[i] = a[min];a[min] = tmp; } //打印结果 myprint(a);}
- 冒泡排序、插入排序、选择排序--C语言实现
- c语言实现选择排序、冒泡排序、插入排序
- 选择排序 冒泡排序 C语言实现
- C语言中冒泡排序,插入排序,选择排序
- 【C语言】冒泡排序,选择排序,插入排序
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- C语言实现冒泡、插入、选择、快速排序
- c语言简单实现 冒泡,插入,选择,归并排序
- C语言实现冒泡、插入、选择、快速排序
- C语言分别实现冒泡排序、快速排序、选择排序
- c语言排序之冒泡排序,选择排序,插入排序,快速排序总结
- C语言实现基本排序算法----排序(直接插入排序,SHELL排序,冒泡排序,快速排序,简单选择排序,堆排序)
- C语言排序算法集锦:选择排序,冒泡排序,插入排序,希尔排序,归并排序,堆排序,快排序
- 排序算法详解(Go语言实现):冒泡排序/选择排序/快速排序/插入排序
- C#实现排序(冒泡排序,选择排序,插入排序,希尔排序)
- ROW_NUMBER() OVER函数的基本用法
- Ubuntu下安装Qt4和PyQt4
- 基于stm32f103zet6的FAT16文件系统学习4(管理SD卡,读取图片,字库)
- 浙江大华2011.10.10校园招聘会笔试题
- android下SQLite学习笔记
- 冒泡排序、插入排序、选择排序--C语言实现
- Bash游戏 V3
- 数据结构复习笔记(一)
- hdu 1548 最短路
- 个性化设置 MySQL prompt 提示符
- A* (路径搜索)算法导引
- 软件测试DAY02
- MySql存储过程—1、SQL存储过程的基础知识
- 单点登录技术Cookie问题