算法排序

个人说明:排序的算法有许多种,该博客只是列举了部分常用的排序方式,以供参考。程序使用语言为C语言。

1.冒泡排序法

  • 基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

  • 图解

  • 代码实现

#include<stdio.h>int main(){int a[] = {5,0,3,1,2};int n=sizeof(a)/sizeof(int);for (int i = 0; i < n-1; i++) {for (int j = n-1; j >i; j--) {if (a[j-1] > a[j]) {int temp=a[j-1];a[j-1]=a[j];a[j]=temp;}}}for(i=0;i<n;i++){printf("%d ",*(a+i));}printf("\n",*(a+i));return 0;
}
  • 时间复杂度分析

若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数C和记录移动次数M均达到最小值:Cmin = N - 1, Mmin = 0。所以,冒泡排序最好时间复杂度为O(N)。
若初始文件是反序的,需要进行 N -1 趟排序。每趟排序要进行 N - i 次关键字的比较(1 ≤ i ≤ N - 1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:
Cmax = N(N-1)/2 = O(N2)
Mmax = 3N(N-1)/2 = O(N2)
冒泡排序的最坏时间复杂度为O(N2)。
因此,冒泡排序的平均时间复杂度为O(N2)。
总结起来,其实就是一句话:当数据越接近正序时,冒泡排序性能越好。

  • 参考博客

1.https://blog.csdn.net/without0815/article/details/7697916
2.http://www.cnblogs.com/jingmoxukong/p/4302718.html

C程序设计--排序(冒泡、选择、插入)--冒泡相关推荐

  1. php冒泡 插入选择 排序,说说PHP数组的三种排序(冒泡/选择/插入)方法

    说说PHP数组的三种排序(冒泡/选择/插入)方法 PHP #数组 #排序 #冒泡 #选择 #插入2012-05-30 10:17 一.冒泡排序法 说明:找到最大的数,排列到最后面,然后继续找 例: $ ...

  2. C++数据结构和算法2 栈 双端/队列 冒泡选择插入归并快排 二三分查找 二叉树 二叉搜索树 贪婪 分治 动态规划

    C++数据结构和算法2 栈 双端/队列 冒泡选择插入归并快排 二三分查找 二叉树 二叉搜索树 贪婪 分治 动态规划 博文末尾支持二维码赞赏哦 _ github 章3 Stack栈 和 队列Queue= ...

  3. Python实现常用排序(选择、冒泡、插入、快排、合并排序、堆排序)

    排序 基本思想:各类排序的共同点,个人认为可以把原始的数据序列,划分为有序序列与无序序列.有序序列开始可能为0,在每一次操作(循环或者递归)后,有序序列数目会加1,无序序列数目会减一,代码走完后,原本 ...

  4. python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现

    写文章主要是记录自己每天学习的东西,本篇文章主要介绍数据结构中常用的简单的排序算法,虽然这些算法用Python实现起来不是十分的高效,不如c.java之类的运行速度快,应用Python实现主要是为了: ...

  5. 算法笔记-排序算法(冒泡 选择 插入)

    首先罗列一下常见的十大排序算法: 一.冒泡排序 1. 定义: 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则 ...

  6. java排序算法(冒泡,插入,选择,快速,堆,归并,希尔,基数)

    import java.util.Arrays; import java.util.LinkedList;/*** * * 各种排序: 冒泡,插入,选择,快速,堆,归并,希尔,基数*/ public ...

  7. Java面试宝典系列之基础面试题-常见的几种排序算法-插入、选择、冒泡、快排、堆排等

    常见的几种排序算法-插入.选择.冒泡.快排.堆排: https://blog.csdn.net/zhangerqing/article/details/8831542

  8. 【数据结构与算法】排序 冒泡、插入、选择 O(n^2)

    冒泡.插入.选择 O(n2) 基于比较 快排.归并 O(nlogn) 基于比较 计数.基数.桶 O(n) 不基于比较 一.如何分析一个排序算法? 学习排序算法的思路?明确原理.掌握实现以及分析性能. ...

  9. 八大排序算法:插入(2:插入、希尔)、选择(2:选择、堆)、交换(2:冒泡、快速)、归并、基数

    八大排序算法 发表于2012/7/23 16:45:18  662397人阅读 分类: c/c++ 数据结构与算法 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排 ...

  10. python简单选择排序_Python实现冒泡,插入,选择排序简单实例

    本文所述的Python实现冒泡,插入,选择排序简单实例比较适合Python初学者从基础开始学习数据结构和算法,示例简单易懂,具体代码如下: # -*- coding: cp936 -*-#python ...

最新文章

  1. python中国大学排名爬虫写明详细步骤-python中国大学排名爬虫
  2. 【面试招聘】算法岗通关宝典 | 社招一年经验,字节5轮、阿里7轮
  3. 牛客18987 粉嘤花之恋(矩阵快速幂、斐波那契数列)
  4. linux 下小技巧之-统计文件夹下面子文件夹下面的个数
  5. 完整的Flex多文件上传实例
  6. springboot~让我习惯了TDD的开发模式
  7. 指标公式c语言源码下载,通达信最全指标公式源码,给大家分享实用的技术指标...
  8. 秩为 1 的矩阵的一些性质
  9. python字典存储数据的形式_python字典的常用操作,数据类型划分
  10. macOS安装wget
  11. java.util.zip.ZipException: only DEFLATED entries can have EXT descriptor
  12. 花3150本钱拉一车菠萝,在马路边摆摊卖水果,卖7天收入4170
  13. ORACLE SQL 优化的若干方法详细
  14. 鸿蒙os5月后还能申请吗,鸿蒙12月申请过现在还能申请吗?
  15. jQuery购物车 商品数量加减和小计
  16. python 函数与部分使用示例
  17. 微信小程序基于腾讯云对象存储的图片上传
  18. jdbc入门到精通1.1访问数据库实战
  19. 愚弄了上万人,AI开始文化入侵了?道翰天琼认知智能机器人平台API接口大脑为您揭秘。
  20. “九歌”来了 | 清华九歌诗词生成系统工具、数据集和论文大合辑

热门文章

  1. RedHat6使用centos6的yum源
  2. 动画库tween.js
  3. WPF transform示例
  4. 在.net中使用sqlite
  5. python astype category_python类别比较型图表柱形图系列堆积柱形图系列
  6. vue4 库模式打包_Steam“小模式”游戏库回归 界面轻快简洁可随时切换
  7. ARM开发7.3.1 基础实训( 1 ) 单个按键的输入系统设计( 1 )--LPC21XX
  8. python求偏度系数_python pandas库和stats库计算偏度和峰度(附程序)
  9. php gif裁剪,PHP 使用Imagick模块 缩放,裁剪,压缩图片 包括gif图片
  10. DOM之操作元素(附实例)