【C语言】排序算法之冒泡排序
冒泡排序(Bubble Sort):是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。(维基百科)
冒泡排序算法的运作如下:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
#include<stdio.h>
void swap(int * a, int * b)
{int temp;temp = *a;*a = *b;*b = temp;
}void bubble_sort(int arr[],int len)
{int i,j,temp;for(i=0;i<len-1;i++){for(j=0;j<len-1-i;j++){if(arr[j]>arr[j+1]){swap(&arr[j],&arr[j+1]);}}}
}int main()
{int arr[]={3,4,2,1};int len,i;len = sizeof(arr) / sizeof(*arr);bubble_sort(arr, len);for(i=0;i<len;i++){printf("%d ",arr[i]);}
}
【C语言】排序算法之冒泡排序相关推荐
- C语言实例——四种排序算法(冒泡排序、选择排序、插入排序、快速排序)
C 语言排序算法 BB Time 一.冒泡排序 1.原理 2.代码 二.选择排序 1.原理 2.代码 三.插入排序 1.原理 2.代码 四.快速排序 1.原理 2.代码 3.操作过程 BB Again ...
- C语言排序算法之简单交换法排序,直接选择排序,冒泡排序
C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 1 /*简单交换法排序 2 根据序列中两个记录键值的比较结果来 ...
- golang 排序_常用排序算法之冒泡排序
周末无事,带娃之余看到娃娃在算数,想到了排序-尝试着把几种常用的排序算法跟大家聊一聊,在分析的后面我会用GoLang.PHP和JS三种语言来实现下. 常见的基于选择的排序算法有冒泡排序.插入排序.选择 ...
- 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序
冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...
- C语言排序算法(十种排序代码可跑
C语言排序算法(十种排序代码可跑) 冒泡排序: 选择排序: 插入排序: 归并排序: 快速排序: 希尔排序: 堆排序: 计数排序: 桶排序: 基数排序: 以上就是所有代码,希望同学们好好学习!!! 冒泡 ...
- 冒泡和快速排序的时间复杂度_常用排序算法之冒泡排序
周末无事,带娃之余看到娃娃在算数,想到了排序-尝试着把几种常用的排序算法跟大家聊一聊,在分析的后面我会用GoLang.PHP和JS三种语言来实现下. 常见的基于选择的排序算法有冒泡排序.插入排序.选择 ...
- Java排序算法:冒泡排序
Java排序算法:冒泡排序 //创建数组并赋值int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,345,1000};for(int i=0 ...
- 排序算法:冒泡排序、插入排序、选择排序、希尔排序
相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 一.冒泡排序: 1.算法原理: 冒 ...
- c语言排序算法 应用与实现,基于C语言排序算法改进与应用.doc
基于C语言排序算法改进与应用 基于C语言排序算法改进与应用 摘 要:介绍了程序语言中排序的原理及应用,阐述了基于C语言的三种主要排序方法,提出了每种排序方法的改进,计算出改进后算法的时间复杂度,编写了 ...
- 数据结构与算法:十大排序算法之冒泡排序
数据结构与算法:十大排序算法之冒泡排序 package array;import java.util.Arrays;//冒泡排序 //1.比较数组中两个相邻的元素,如果第一个数比第二个数大,我们就交换 ...
最新文章
- PHP学习笔记-PHP与Web页面的交互2
- 遇到的问题锦集及解决方案
- 洛谷 - P4001 [ICPC-Beijing 2006]狼抓兔子(网格图最大流转换为对偶图最短路)
- 经验:Windows To Go准备工作
- 程序员面试金典 - 面试题 10.10. 数字流的秩(map/树状数组)
- 动态规划--Leetcode62--不同路径
- 软件开发质量的双保险 — 3.应用设计验证与应用用例
- 调用图片文件夹中的任意图片随机显示_【分享】文字、表格、公式图片识别神器V0.8...
- C++ STL容器之string--常用接口
- FZEasyFile的使用
- 74HC/LS/HCT/F系列芯片的区别
- sublime 配置快捷键
- (原創) 如何使用ThinkPad的TrackPoint(小紅點)? (NB) (ThinkPad)
- DNS分类与区别-权威DNS、递归DNS、转发DNS
- 关于ttime的序列化存储及读取的方法
- Python爬虫之爬取网站图片
- stm32f103——基本定时器与定时器中断
- 航班查询接口调用介绍
- 用友U9 UAP平台解析
- 【安路FPGA】FPGA开发日记(一)