排序算法

冒泡排序

冒泡排序原理:

原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束。

排序过程:

从小到大排序:6 2 4 1 5 9

第一次排序(外循环)

第一次两两比较6 > 2交换(内循环)

交换前状态 6 2 4 1 5 9

交换后状态 2 6 4 1 5 9

第二次两两比较,6 > 4交换

交换前状态 2 6 4 1 5 9

交换后状态 2 4 6 1 5 9

第三次两两比较,6 > 1交换

交换前状态 2 4 6 1 5 9

交换后状态 2 4 1 6 5 9

第四次两两比较,6 > 5交换

交换前状态 2 4 1 6 5 9

交换后状态 2 4 1 5 6 9

第五次两两比较,6 < 9不交换

交换前状态 2 4 1 5 6 9

交换后状态 2 4 1 5 6 9

第二趟排序(外循环)

第一次两两比较2 < 4不交换

交换前状态 2 4 1 5 6 9

交换后状态 2 4 1 5 6 9

第二次两两比较,4 > 1交换

交换前状态 2 4 1 5 6 9

交换后状态 2 1 4 5 6 9

第三次两两比较,4 < 5不交换

交换前状态 2 1 4 5 6 9

交换后状态 2 1 4 5 6 9

第四次两两比较,5 < 6不交换

交换前状态 2 1 4 5 6 9

交换后状态 2 1 4 5 6 9

第三趟排序(外循环)

第一次两两比较2 > 1交换

交换后状态 2 1 4 5 6 9

交换后状态 1 2 4 5 6 9

第二次两两比较,2 < 4不交换

交换后状态 1 2 4 5 6 9

交换后状态 1 2 4 5 6 9

第三次两两比较,4 < 5不交换

交换后状态 1 2 4 5 6 9

交换后状态 1 2 4 5 6 9

第四趟排序(外循环)无交换

第五趟排序(外循环)无交换

代码:

C代码:

#include<stdio.h>

int main()
{
int num[6] = {6,2,4,1,5,9};
int temp = 0;
int i,j;
for(i = 0;i < sizeof(num)/sizeof(num[0]);i++){
for(j = 0; j < sizeof(num)/sizeof(num[0])-i-1;j++)
if(num[j] > num[j+1]){
temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
} for(i = 0;i < sizeof(num)/sizeof(num[0]);i++){
printf("%d ",num[i]);
}
printf("\n");
return 0;
}

Python之路第六天,进阶-算法的更多相关文章

  1. Python之路,Day21 - 常用算法学习

    Python之路,Day21 - 常用算法学习   本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的 ...

  2. Python之路:常用算法与设计模式

    选择排序 时间复杂度 二.计算方法 1.一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花 ...

  3. python之路:进阶篇 内置函数

     li = [11, 22, 33] news = map(  li = [100, 2200, 3300] news = map(  [13, 24, 35] [11, 11, 11] [22, 4 ...

  4. python之路:进阶篇

     > ) {        ;    }    printf(;} print i >>>      >>>  == :    name  ==   ==   ...

  5. python之路——二分查找算法

    楔子 如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72 ...

  6. Python之路-(Django进阶一)

    Django请求生命周期: 首先,客户端发送请求到服务器的urls库,通过匹配url后面的关键字,去找指定app里面的的view. 然后,app通过判断,拿到数据库数据和html模板文件. 最后,将拿 ...

  7. Python之路第六天,基础(8)-反射

    反射 利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员(函数). Python中反射用到的4个内置函数:getattr(),setattr(),hasattr(),delattr() ...

  8. Python之路第六天,基础(7)-正则表达式(re)

    Python RE模块(正则表达式) 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成 ...

  9. python之路:进阶 二

        c = collections.Counter(  Counter({ b = collections.Counter(  b.update(c)   Counter({ Counter({  ...

随机推荐

  1. js中的this指向

    1, 指向window 全局变量 alert(this) //返回 [object Window] 全局函数 function sayHello(){ alert(this); } sayHello( ...

  2. Django auth 登陆后页面跳转至/account/profile,修改跳转至其他页面

    这几天在学习django,django功能很强大,自带的auth,基本可以满足用户注册登陆登出,简单的用户注册登陆系统使用django auth足矣.当然也不是拿来就能用的,需要自己写登陆页面的模板, ...

  3. Bulk-Only传输协议 UFI命令块规范

    USB设备分为5大类,即显示器.通信设备.音频设备.人机输入和海量存储.通常所用的U盘.移动硬盘均属于海量存储类.海量存储类的规范中包括4个独立的子规范,即CBI传输.Bulk-Only传输.ATA命 ...

  4. android fragment 跳到另一个fragment

    一共有4个fragment,分别是contact(联系人),friends(朋友),search(查找),more(更多).使用的都是同一个布局,每个fragment中都有四个内部按钮,可以切换到其他 ...

  5. css案例学习之通过relative与absolute实现带说明信息的菜单

    效果如下 代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  6. java使用poi创建excel文件

    import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import or ...

  7. RBF径向基神经网络——乳腺癌医学诊断建模

    案例描述 近年来疾病早期诊断越来越受到医学专家的重视,从而产生了各种疾病诊断的新方法.乳癌最早的表现是患乳出现单发的.无痛性并呈进行性生长的小肿块.肿块位于外上象限最多见,其次是乳头.乳晕区和内上象限 ...

  8. Eclipse配置Maven开发环境

    前言: 现在Eclipse版本越来越高.高版本的Eclipse甚至已经集成了Maven像是SpringSource的哪个版本.用习惯了Eclipse.在开发中还是不想更换掉自己的IDE.如此一来就又了 ...

  9. The Java™ Tutorials下载地址

    1.The Java™ Tutorials下载地址: http://www.oracle.com/technetwork/java/javase/java-tutorial-downloads-200 ...

  10. 数据连接池——JNDI

    数据库连接有很多中方式,JDBC数据库的连接方式,前边我们已经介绍过了,而开发中我们经常使用的是DataBaseConnectionPool(数据库连接池,DBCP).数据库连接池到底是什么?它比jd ...