一、冒泡排序法

假设从小到大排序,例一数组:int arr[] = {2,1,34,5}。

arr[0]先跟相邻的arr[1]比较大小,如果比它大则交换两个数值位置,大的数值放在后面。然后比较arr[1]和arr[2]的大小,以此类推,直至第n-2个和第n-1个元素(n为数组大小)进行比较为止。此时找出了数组中最大的元素放在了最后一位,完成第一次冒泡排序。

第二次排序对数组的前n-1个元素进行冒泡排序,找出了数组第2大的元素放在了倒数第2位。

第三次排序对数组的前n-2个元素进行冒泡排序......以此类推,直至数组前两个元素比较完为止。

冒泡排序的次数即外层for循环的次数是数组大小n-1,在一次的冒泡排序中循环的次数与进行第几次冒泡排序有关。

//冒泡排序
#include <stdio.h>int main()
{int arr[] = {2,1,34,5};int i,j,tmp;int size = sizeof(arr)/sizeof(int);for(i=0;i<size-1;i++){for(j=0;j<size-i-1;j++){if(arr[j] > arr[j+1]){tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}for(i=0;i<size;i++){printf("%d ", arr[i]);}return 0;
}

二、选择排序

假设从小到大排序,例一数组:int arr[] = {2,1,34,5}。

arr[0]先跟arr[1]比较大小,如果比它大则交换两个数值位置,小的数值放在第一位,然后和arr[2]比较。以此类推,直至与第n-1个元素(n为数组大小)比较完为止。此时找出了数组中最小的元素放在了第一位,完成第一次排序。

第二次排序从arr[1]开始,与arr[2]比较,然后和arr[3]比较,直至与第n-1个元素比较完为止。

第三次排序从arr[2]开始,与arr[3]比较,然后和arr[4]比较,直至与第n-1个元素比较完为止。

排序的次数即外层for循环的次数是数组大小n-1,在一次的排序中循环的次数与进行第几次排序有关。

//选择排序
#include <stdio.h>int main()
{int arr[] = {2,1,34,5,3,65};int i,j,tmp;int size = sizeof(arr)/sizeof(int);for(i=0;i<size-1;i++){for(j=0;j<size-1-i;j++){if(arr[i] > arr[i+j+1]){tmp = arr[i];arr[i] = arr[i+j+1];arr[i+j+1] = tmp;}}}for(i=0;i<size;i++){printf("%d ", arr[i]);}return 0;
}

C语言冒泡排序和选择排序相关推荐

  1. 【C语言冒泡排序、选择排序和快速排序】

    文章目录 前言 一.冒泡排序 二.选择排序 三. 快速排序 四.代码设计与实现 代码设计 代码实现 调试结果 冒泡排序改良 延伸思考 总结 前言 本文简单介绍了C语言的冒泡排序.选择排序.快速排序,结 ...

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

    参考:C语言五大排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)动态演示 作者:一只青木呀 发布时间: 2020-09-09 20:18:43 网址:https://blog.csdn.net/ ...

  3. c语言排序需要插空的最小次数,C语言数组排序——冒泡排序、选择排序、插入排序...

    一.冒泡排序 原理解析:(以从小到大排序为例)在一排数字中,将第一个与第二个比较大小,如果后面的数比前面的小,则交换他们的位置. 然后比较第二.第三个--直到比较第n-1个和第n个,此时,每一次比较都 ...

  4. 总结c语言基础算法——冒泡排序法和选择排序法

    1.首先无论何种排序方法其最终目的是按要求将所给数据进行排序.而在C语言中可以有很多排序的方法,这里着重介绍的是常用的较为基础和重要的算法--冒泡排序法和选择排序法. 下面将举一个例子进行讲解: 要求 ...

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

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

  6. java语言冒泡排序法_Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等...

    本文实现了八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 .快速排序.归并排序.堆排序和LST基数排序 首先是EightAlgorithms.java文件,代码如下: import jav ...

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

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

  8. 冒泡排序,插入排序,选择排序三种算法的优劣

    https://www.jianshu.com/p/9f724c880124 最近听了王争老师的数据结构与算法之美,大有获益,特写此博客与大家分享. 排序算法太多了,但大体可以归结于三类,冒泡排序,插 ...

  9. 算法与数据结构(冒泡排序,选择排序和插入排序的总结)

    冒泡排序,选择排序和插入排序的总结 在规模较小时,或者元素的有序性较高时,插入排序的时间复杂度可以接近 O(n) ,是上述三种排序里表现最好的 一.通过表格我们可以发现,冒泡排序的时间复杂度是要优于选 ...

  10. JavaSE(二十四)——冒泡排序、选择排序、直接插入排序以及二分查找

    文章目录 1. 冒泡排序 2. 选择排序 3. 直接插入排序 4. 二分查找 1. 冒泡排序 原理:数组元素两两比较,大的往后放,经过一轮比较后,最大元素在最后面,如此往复. 举例说明: 代码: // ...

最新文章

  1. MySQL 性能优化,索引和查询优化
  2. js监听audio播放完毕
  3. 如何使用windbg在驱动加载时下断
  4. python需要学多久才能找到工作-为什么Python适合初学者,一般要学习多久
  5. 软件和硬件的关系以及软件调动硬件的工作原理
  6. oracle怎么捕获表上的DML语句(不包括select)语句)
  7. 深入理解计算机系统之旅(一)计算机系统漫游
  8. worknc的后处理如何安装_UG NX后处理安装方法(新手入门)
  9. 【C语言简单说】十三:逻辑运算符||
  10. Ios 被拒出现3.1.1
  11. 深入理解JavaScript系列(12):变量对象(Variable Object)
  12. Shell编程基础(1)
  13. 使用Leaflet创建地图拓扑图
  14. c语言中区别一般变量,C语言中,为了区别一般的变量,符号常量必须用
  15. windows 给安装目录命令权限
  16. mybatisplus中的xml对象参数传递
  17. 提升进程权限的几个常用函数
  18. 如何除去Windows的快捷方式小图标
  19. JAVA和C#调用CSB服务示例
  20. utility/u8g.h: No such file or directory -- 0.96寸 不能显示中文 错误

热门文章

  1. 【BZOJ1057】[ZJOI2007] 棋盘制作(单调栈的运用)
  2. floodlight路由机制分析
  3. java中switch、while、do...while、for
  4. CROC 2016 - Elimination Round Mischievous Mess Makers
  5. Win32可执行文件的开发过程 - Win32汇编语言008
  6. floyd算法求最短路径_算法题-蜜蜂采蜜最短路径
  7. C语言输出AB9798,c语言基础练习习题及答案.doc
  8. yolov3-tiny 训练一个检测器(1)
  9. 使用darknet批量测试图片并保存在指定文件夹下
  10. pip更新pip,升级 pip3怎么做?