冒泡排序、插入排序、选择排序--C语言实现
2013-04-09 20:45
731 查看
最近打算抽时间复习数据结构,怎奈琐事繁杂,难以抽出时间,但又定下每天计划,故,第一天就写个最简单的几种排序算法的C语言实现吧。
记得当时,最初接触排序,学会的第一个方法就是冒泡排序,这个也是我觉得最简单的排序方法。
简单描述就是,先比较k1和k2,然后比较k2和k3,...,kn-1和kn。
一遍比较下来,就确定了 n - i - 1个元素中最大的元素。
在执行n-1次即可。
第二个是插入排序,插入排序是模拟我们打扑克调牌的过程,假设左手拿牌,右手摸牌。右手摸了第一张牌之后,左手拿着。摸了第二张牌后,再插入左手的牌中之前,需要和左手中的牌比较,选择查到后面还是前面。后面再摸牌就一样了。
第三个是选择排序,选择排序也是比较好理解的排序方法,它就是选择给定范围内的所有中的最小(最大)的一个放在最小(最大)的应该放的位置。
记得当时,最初接触排序,学会的第一个方法就是冒泡排序,这个也是我觉得最简单的排序方法。
简单描述就是,先比较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语言基本排序算法之插入排序与直接选择排序实现方法
- 最简单之Java实现冒泡排序、选择排序、插入排序、希尔排序、归并排序和快速排序(转载请注明出处)
- 排序算法一:冒泡排序,插入排序以及选择排序原理与MATLAB实现
- js实现的冒泡排序、选择排序、插入排序、快速排序
- c语言中冒泡排序、插入排序、选择排序算法比较
- C#实现排序(冒泡排序,选择排序,插入排序,希尔排序)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 冒泡排序,直接选择排序,插入排序实现
- C语言单链表的3种排序算法,插入排序,冒泡排序,选择排序
- Python实现冒泡排序,选择排序,插入排序
- Java分别实现冒泡排序、插入排序、快速排序、选择排序、交换排序
- C语言实现选择排序、直接插入排序、冒泡排序的示例
- 选择排序 冒泡排序 C语言实现
- java类实现数组的五种排序 冒泡排序、选择排序、插入排序、希尔排序、数组排序
- java实现冒泡排序,选择排序,插入排序,快速排序(简洁版)及性能测试
- Java实现排序(快速排序、冒泡排序、选择排序、基数排序、插入排序)
- 冒泡排序、选择排序、插入排序 算法实现