排序算法

冒泡排序

冒泡排序原理:

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

排序过程:

从小到大排序: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. 不用不知道 apply()与call()的强大

    在看关于javascript继承的时候 好多地方都用到了apply()和call() 之前在简单编程的时候根本没有遇到过 查阅资料后才发现这两个方法是如此的好用. 下面从几方面来看一下这两个方法: 1 ...

  2. sql中NULL的问题

    sql中NULL的问题   今天一不小心在sql中写出以下脚本 select defaultPositionId from TableName where UserId=1100528 and def ...

  3. Android动态加载代码技术

    Android动态加载代码技术 在开发Android App的过程当中,可能希望实现插件式软件架构,将一部分代码以另外一个APK的形式单独发布,而在主程序中加载并执行这个APK中的代码. 实现这个任务 ...

  4. 生产环境中CentOS7部署NET Core应用程序

    NET Core应用程序部署至生产环境中(CentOS7) 阅读目录 环境说明 准备你的ASP.NET Core应用程序 安装CentOS7 安装.NET Core SDK for CentOS7. ...

  5. ubuntu 中c 语言编程(学习)

    ubuntu下c编程 c编程中相关文件后缀 .a    静态库(archive .c     C源代码(需要编译预处理) .h     C源代码头文件 .i      C源代码 (不需要编译预处理) ...

  6. 理解 backbone.js 中的 bind 和 bindAll 方法,关于如何在方法中指定其中的 this,包含apply方法的说明[转载]

    转载自:http://gxxsite.com/content/view/id/132.html 在backbone.js的学习过程中,被bind和bindAll弄得有点晕,这里包括underscore ...

  7. Android SDK更新缓慢或无法更新的解决方法

    windows 解决方法就是修改C:\Windows\System32\drivers\etc\hosts文件.添加一行: 74.125.237.1       dl-ssl.google.com l ...

  8. Median of Two Sorted Arrays 解答

    Question There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median o ...

  9. 剑指offer-面试题11.数值的整数次方

    题目:实现函数double Power(double base,int exponent),求base的 exponent次方.不得使用库函数,同时不需要考虑大数的问题. 这道题看似很简单: 然而需要 ...

  10. python定时器爬取豆瓣音乐Top榜歌名

    python定时器爬取豆瓣音乐Top榜歌名 作者:vpoet mail:vpoet_sir@163.com 注:这些小demo都是前段时间为了学python写的,现在贴出来纯粹是为了和大家分享一下 # ...