1 /* 2  * FILE: p198_sort.c3  * DATE: 201801144  * --------------5  */6 7 #include <stdio.h>8 9 /* 从小到大 排序 */10 void insert_sort_min(int *array, int length);11 void bubble_sort(int *array, int length);12 void select_sort(int *array, int length);13 14 void print(const int *array, const int length);15 16 #define swap(a, b) do{ \17         (a) = (a) ^ (b); \18         (b) = (b) ^ (a); \19         (a) = (a) ^ (b); \20         }while(0)21 22 int main(int argc, char *argv[])23 {24         int a[] = {5,2,7,4,9,1,2,0};25         int len = sizeof(a) / sizeof(a[0]);26         print(a, len);27         insert_sort_min(a, len);28         print(a, len);29         bubble_sort(a, len);30         print(a, len);31         select_sort(a, len);32         print(a, len);33         return 0;34 }35 36 /* 直接插入排序 straight insertion sort */37 /* 若当前数 比前一个数更小,有元素都向后移一位38  * 再将当前数 插入至它应在的位置39  * 当前数的前面 已经排好序 */40 void insert_sort_min(int *array, int length)41 {42         int i;43         for(i=1; i<length; i++)44         {45                 int j = i;46                 int temp = array[i];47                 // 小心:是temp<array[j-1];而不是a[j]48                 // 若需从大到小 则temp>array[j-1]49                 while((j>0) && (temp < array[j-1]))50                 {51                         array[j] = array[j-1];52                         j--;53                 }54                 array[j] = temp;55         }56 }57 58 /* 冒泡排序 bubble sort */59 /* 相邻的两两比较 */60 void bubble_sort(int *array, int length)61 {62         int i, j;63         for(i=0; i<length-1; i++)64                 for(j=1; j<length-i; j++)65                 {66                         // 若需从大到小,则a[j]>a[j-1]67                         if(array[j] > array[j-1])68                                 swap(array[j], array[j-1]);69                 }70 }71 72 /* 简单选择排序 simple selection sort */73 /* 当前元素 与其后的所有元素比较 */74 void select_sort(int *array, int length)75 {76         int i, j;77         for(i=0; i<length-1; i++)78                 for(j=i+1; j<length; j++)79                 {80                         // 若需从大到小,则a[j]>a[i]81                         if(array[j] < array[i])82                                 swap(array[j], array[i]);83                 }84 }85 86 void print(const int *array, const int length)87 {88         int i;89         for(i=0; i<length; i++)90                 printf("%d ", array[i]);91         printf("\n");92 }

(C语言)八大排序之:插入排序、冒泡排序、选择排序相关推荐

  1. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  2. 【排序算法】冒泡排序|选择排序|插入排序|希尔排序

    文章目录 冒泡排序 选择排序 插入排序 希尔排序 冒泡排序   第一个元素开始向第二个元素比较,若大于则交换位置,不大于则不动.然后第二个元素和第三个元素比较,再然后第三个元素和第四个元素比较-一直比 ...

  3. 【排序算法】冒泡排序 选择排序 插入排序 希尔排序(数组)

    冒泡排序 #include<iostream> using namespace std; #define SWAP(a,b) {int tmp;tmp=a;a=b;b=tmp;} int ...

  4. 数据结构——排序:插入排序、选择排序、交换排序、归并排序、基数排序

    排序 内部排序:数据量不大,在内存中可以完成排序. 外部排序:借助外存.把数据文件分成若干块,涉及内外存数据的转换.存储器的管理等. 稳定排序:能保证排序前两个相等的数其在序列的前后位置顺序和排序后它 ...

  5. 快速排序、希尔排序、插入排序、选择排序、归并排序、堆排序总结

    一.快速排序的基本思想     设当前待排序的无序区为R[low..high],利用分治法可将快速排序的基本思想描述为: ①分解:     在R[low..high]中任选一个记录作为基准(Pivot ...

  6. ****** 四 ******、软设笔记【数据结构】-排序、插入排序、选择排序

    一.排序     将一组杂乱无章的数据按一定的规律次序排列起来.     排序的目的是什么?         *便于查找!     排序算法的好坏如何衡量?         *时间效率--排序速度(即 ...

  7. c语言排序(快速排序,冒泡排序,选择排序,插入排序,桶排序)

    快速排序,冒泡排序,选择排序,插入排序,桶排序 文章目录 什么是排序 快速排序 实现流程 代码 改进版快速排序代码 注意点 冒泡排序 实现流程 实现代码 选择排序 实现代码 插入排序 实现代码 桶排序 ...

  8. c语言数组项目按身高排序,过三关 Java冒泡排序选择排序插入排序小练习

    材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...

  9. 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...

  10. 冒泡排序、插入排序、选择排序、希尔排序、堆排序、归并排序等常用排序算法的比较

    掌握好常用的排序算法,在实际的项目开发中可以节省很多的时间.每一种排序算法在执行的效率上是存在差别的,这些微小的时间差,也许在平常的联系当中感觉不到,但是涉及到数据量比较大或者是在资源比较紧张的系统中 ...

最新文章

  1. Codeforces Educational round 58
  2. 手撸一个npm包,安利一下duiba-sprite
  3. tcp/ip 协议栈Linux内核源码分析12 udp套接字发送流程一
  4. 自动化机器学习(三)神经网络架构搜索综述(NAS)简述
  5. WCF后传系列(3):深入WCF寻址Part 3—消息过滤引擎
  6. Flask的session使用
  7. java使用AntPathMatcher进行uri匹配
  8. mysql 自增id replace_MySQL--REPLACE INTO与自增
  9. oracle number对应java什么类型_JVM系列之数据类型
  10. pic单片机c语言读eeprom,PIC单片机的EEPROM读写实例及说明
  11. python中什么是序列_在Python中,什么是字符串序列?(或者是油嘴滑舌的虫子?)...
  12. win10 打开注册表
  13. c语言程序设计 甘勇,C语言程序设计
  14. C++ - priority_queue
  15. 代码还是要亲自动手写才行啊
  16. 总结:项管成本管理计算公式
  17. 杂散干扰解决办法_F频段干扰问题的几种解决方案
  18. 猴子搬香蕉(算法入门题目005)
  19. Rosalind Java| Counting DNA Nucleotides
  20. 区块链开发笔记——提高区块链系统性能和可扩展性的方法,侧链技术

热门文章

  1. matlab实现传递函数参数辨识,由阶跃响应曲线辨识传递函数的图解方法
  2. python和python3联通_python2号和python3号的区别总结,差异
  3. 回归模型选择(R语言版)
  4. pyperclip 粘贴失效
  5. esp32 cam接入homekit苹果家庭app
  6. 苹果怎么强制恢复出厂_苹果音响HomePod重置,HomePod怎么恢复出厂?
  7. 主管护师计算机考试如何舞弊,人机对话操作步骤详解,2020主管护师考生必看!...
  8. html 鼠标中键事件,Javascript事件模拟(鼠标事件、键盘事件)
  9. 程序设计综合实践题库答案
  10. 触摸数学激情——与数学家张景中对话