C和Python实现冒泡法排序
2015-07-26 23:51
701 查看
首先我们看冒泡法排序的原理,假设有一个包含6个数字的数组
其思路为:每次将相邻两个数比较,将小的调到前面,如果有6个数:8,7,5,4,2,0。第一次先将最前面的两个数8和7对调(看下图)。第二次将第二个数和第三个数(8和5)对调.....如此总计进行了5次,得到7-5-4-2-0-8的顺序,可以看到:最大的数8已经沉底,成为最下面的一个数,而小的数上升。经过第一轮(5次比较)后,得到了最大的数9。
然后进行第二轮的比较(见下图),对余下的7,5,4,2,0进行新一轮的比较,以便使次大的数沉底。经过这一轮4次的比较与交换,得到次大的数7。
按照此规律进行下去,可以推知6个数需要比较5轮,其中第一轮需要比较5次,第二轮需要比较4次....第五轮只需比较一次。
如果有n个数,则需要比较n-1轮,在第一轮比较重要进行n-1次两两比较,在第j轮中要进行n-j次的两两比较。
这种如水底的气泡逐步冒出水面一样,故称之为冒泡法。
C语言代码如下:
Python代码如下:
其思路为:每次将相邻两个数比较,将小的调到前面,如果有6个数:8,7,5,4,2,0。第一次先将最前面的两个数8和7对调(看下图)。第二次将第二个数和第三个数(8和5)对调.....如此总计进行了5次,得到7-5-4-2-0-8的顺序,可以看到:最大的数8已经沉底,成为最下面的一个数,而小的数上升。经过第一轮(5次比较)后,得到了最大的数9。
如果有n个数,则需要比较n-1轮,在第一轮比较重要进行n-1次两两比较,在第j轮中要进行n-j次的两两比较。
这种如水底的气泡逐步冒出水面一样,故称之为冒泡法。
C语言代码如下:
#include<stdio.h> int main() { int t,i,n,a[10]; printf("please enter 10 numbers:"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<=8;i++) for(n=0;n<9-i;n++) if(a >a[n+1]) { t=a ; a =a[n+1]; a[n+1]=t; } printf("the sorted numbers is:"); for(i=0;i<=9;i++) printf("%d\t",a[i]); return 0; }
Python代码如下:
def mppx(arr): for i in range(len(arr)-1): for j in range(len(arr)-i-1): if arr[j]>arr[j+1]: temp=arr[j] arr[j]=arr[j+1] arr[j+1]=temp return arr
相关文章推荐
- Python request第三方库的安装
- Thrift 連線至 Hbase 使用Python - ImportError: No module named Thrift
- python 爬虫1 开始,先拿新浪微博开始
- [Python] Python中的一些特殊函数
- Python 字典的使用
- Python 字典的使用
- python脚本自动保存blog页面
- python对文件的基本操作
- python中列表 元组 字典 集合的区别
- [Python]psutil模块:用于获得处理器、系统和进程相关信息
- SyntaxError: Non-ASCII character Python、Unicode和中文
- python中使用xmlrpc
- Python项目9:文件共享2
- python实现ftp上传下载文件
- sublime text 3搭建Python编程环境步骤
- python实现ftp的基本功能
- python的threading的简单用法
- python-文件输入输出
- Python向MySQL批量插入数据
- python 除法