排序(3)---------冒泡排序(C语言实现)
说到冒泡排序,大一的时候第一次学习这个排序算法,可能大家不知道,“冒泡”在我说的方言里面是吹牛逼的意思。
所以就认为这个排序算法特吹牛逼有木有。
相信大家对全部的排序算法,这个想必是最熟悉的。
大学老师多次强调,去培训。讲师也会提到。这个在面试常常被问到,所以我建议大家最好把这个算法背下来,做到心中有冒泡,手上写出来 哈哈。
好了,言归正传。
什么是冒泡排序,所谓冒泡。比方有一天你神经病发作突然跑到河边,扔了一块石头进去。如果这里河底产生了一个气泡,它会一直往上窜啊窜,知道露出水面。见天日。没错。这就是冒泡排序的核心步骤。
冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它反复地走訪过要排序的数列,一次比較两个元素,假设他们的顺序错误就把他们交换过来。走訪数列的工作是反复地进行直到没有再须要交换。也就是说该数列已经排序完毕。这个算法的名字由来是由于越小的元素会经由交换慢慢“浮”到数列的顶端。
源码:
#include "stdafx.h"
#include <stdlib.h> void Bubble_Sort()
{
int arr[10]; for ( int i=0; i<10; i++) //初始化数据
{
arr[i] = rand()%520; //随机生成数据
}
printf("Before sort:\n"); //打印排序前的数据
for (int i = 0; i < 10; i++)
{
printf("%d ",arr[i]);
} //開始排序
for (int i = 0; i < 10-1; i++) //仅仅须要比較length-1次,比方3个数相比 仅仅须要比較2次
//网上非常多代码都是i<length 事实上多余了
{
for (int j = 0; j < 10-i-1; j++) //每次都能找到最小的数,因此能够将其排除,条件即变为:j<length-i-1
{
if (arr[j] > arr[j+1]) //交换
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
} printf("\nAfter sort:\n"); //打印排序后的数据
for (int i = 0; i < 10; i++)
{
printf("%d ",arr[i]);
} } int _tmain(int argc, _TCHAR* argv[])
{
Bubble_Sort(); printf("\n");
system("pause");
return 0;
}
执行结果:
Before sort:
41 267 94 500 449 124 38 238 442 24
After sort:
24 38 41 94 124 238 267 442 449 500
请按随意键继续. . .
如有错误,望不吝指出。
排序(3)---------冒泡排序(C语言实现)的更多相关文章
- C语言排序算法之简单交换法排序,直接选择排序,冒泡排序
C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 /*简单交换法排序 根据序列中两个记录键值的比较结果来对换这两 ...
- C语言中的排序算法--冒泡排序,选择排序,希尔排序
冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没 ...
- 【最全】经典排序算法(C语言)
算法复杂度比较: 算法分类 一.直接插入排序 一个插入排序是另一种简单排序,它的思路是:每次从未排好的序列中选出第一个元素插入到已排好的序列中. 它的算法步骤可以大致归纳如下: 从未排好的序列中拿出首 ...
- 排序算法总结(C语言版)
排序算法总结(C语言版) 1. 插入排序 1.1 直接插入排序 1.2 Shell排序 2. 交换排序 2.1 冒泡排序 2.2 快速排序 3. 选择 ...
- 冒泡排序_C语言_数组
冒泡排序_C语言_数组 #include <stdio.h> //冒泡排序 小->大 void sort(int * pArray, int len); int main(int a ...
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html 目录 马桶排序(令人 ...
- 归并排序 & 计数排序 & 基数排序 & 冒泡排序 & 选择排序 ----> 内部排序性能比较
2.3 归并排序 接口定义: int merge(void* data, int esize, int lpos, int dpos, int rpos, int (*compare)(const v ...
- 七内部排序算法汇总(插入排序、Shell排序、冒泡排序、请选择类别、、高速分拣合并排序、堆排序)
写在前面: 排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的随意序列,又一次排列成一个按keyword有序的序列.因此排序掌握各种排序算法很重要. 对以下介绍的各个排序,我们假定全部排 ...
- java数组降序排序之冒泡排序
import java.util.Arrays;//必须加载 class Demo{ public static void main(String []args){ int[] arr={3,54,4 ...
随机推荐
- ubuntu12.04安装翻译软件stardict及卸载
下载: 1.打开软件中心.搜索stardict,星际译王,即ubuntu下的翻译软件. 点击下载就可以. 2.打开终端,输入 $sudo apt-get install stardict 按提示就可以 ...
- 一起talk C栗子吧(第一百一十九回:C语言实例--线程死锁三)
各位看官们.大家好,上一回中咱们说的是线程死锁的样例,这一回咱们继续说该样例.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,由于篇幅的原因我们在上一回仅仅介绍了死锁发生的第一种原因,今天 ...
- 创建多线程的HttpClient
在实际的应用中,我们的联网应用程序里应该有一个HttpClient,并将其用于所有的HTTP通信.这就可能在同一个Http Client同时发出多个请求,也就产生了多线程的问题.幸运的是,在HttpC ...
- tensorflow利用预训练模型进行目标检测(一):安装tensorflow detection api
一.tensorflow安装 首先系统中已经安装了两个版本的tensorflow,一个是通过keras安装的, 一个是按照官网教程https://www.tensorflow.org/install/ ...
- SQL Server数据库性能优化
开篇: 最近遇到了很多性能问题,一直没来的及总结,今天正好周末抽时间总结下: 对于稍微大点的公司或者说用户多一些的公司,说白了就是数据量较大的公司,在查询数据时往往会遇到很多瓶颈.这时就需要 ...
- JS应用实例1:表格各行换色
效果如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- Android截图<包括Alertdiaog>
1.使用的系统内部的截屏方法…… 2. public class MainActivity extends AppCompatActivity { private static final Strin ...
- JPush设置别名不走成功回调的解决办法
在参考了极光推送的文档之后,对个推(单个推送)有设置别名的方法,方法如下 [JPUSHService setTags:tags alias:alias fetchCompletionHandle:^( ...
- 列表查询组件代码, 简化拼接条件SQL语句的麻烦
列表查询组件代码, 简化拼接条件SQL语句的麻烦 多条件查询
- Haskell手撸Softmax回归实现MNIST手写识别
Haskell手撸Softmax回归实现MNIST手写识别 前言 初学Haskell,看的书是Learn You a Haskell for Great Good, 才刚看到Making Our Ow ...