排序值冒泡排序的详解
2015-09-23 18:43
169 查看
排序方法是一种重要的、基本的算法。排序方法很多,本例用冒泡法。
冒泡法c语言的实现:
比较10个数,冒泡法实现
#include<stdio.h>
int main()
{
int i,j,t;
int a[10];
printf("input 10 numbers :\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++) //实现9趟比较
for(i=0;i<9-j;i++) //每一趟进行9-j次排序
if(a[i]>a[i+1]) //相邻两个数比较
{
t=a[i];a[i]=a[i+1];a[i+1]=t
}
printf("the sorted nmbers:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
retrun 0;
}
冒泡法的基本思路是:每次将相邻两个数比较,将小的调到前头。若有6个数:9,8,5,4,2,0.第一次现将最前面8和9对调。第二次将第二个数和第三个数对调,如此进行,共进行5次,得到8,5,4,2,0,9的顺序,可以看到:最大的数9已“沉底”,成为下面一个数,而小数上升。最小的0已向上浮起一位。经过第一趟(共5次比较与交换)后,已得到最大数9.
然后进行第2趟比较,对余下的前面5个数(8,5,4,2,0)进行新一轮的比较,以便使次大的数“沉底”.经过一趟4次比较与交换得到次大数8。
如果有n个数,则要进行n-1趟比较。
第1趟比较中要进行n-1次两两比较,在j趟比较中要进行n-j次两两比较。冒泡排序法总的时间复杂度O(n2).
冒泡法c语言的实现:
比较10个数,冒泡法实现
#include<stdio.h>
int main()
{
int i,j,t;
int a[10];
printf("input 10 numbers :\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++) //实现9趟比较
for(i=0;i<9-j;i++) //每一趟进行9-j次排序
if(a[i]>a[i+1]) //相邻两个数比较
{
t=a[i];a[i]=a[i+1];a[i+1]=t
}
printf("the sorted nmbers:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
retrun 0;
}
冒泡法的基本思路是:每次将相邻两个数比较,将小的调到前头。若有6个数:9,8,5,4,2,0.第一次现将最前面8和9对调。第二次将第二个数和第三个数对调,如此进行,共进行5次,得到8,5,4,2,0,9的顺序,可以看到:最大的数9已“沉底”,成为下面一个数,而小数上升。最小的0已向上浮起一位。经过第一趟(共5次比较与交换)后,已得到最大数9.
然后进行第2趟比较,对余下的前面5个数(8,5,4,2,0)进行新一轮的比较,以便使次大的数“沉底”.经过一趟4次比较与交换得到次大数8。
如果有n个数,则要进行n-1趟比较。
第1趟比较中要进行n-1次两两比较,在j趟比较中要进行n-j次两两比较。冒泡排序法总的时间复杂度O(n2).
相关文章推荐
- linux下添加PATH环境变量
- 程序员的业余项目
- Linux 命令 - traceroute: 数据报传输路径追踪
- MySQL 表名大小写区分
- 程序员的业余项目
- 程序员的业余项目
- 程序员的业余项目
- 传感器 -UIAccelerometer
- 信息的概念
- uva 10054 The Necklace(欧拉回路)
- centOS下yum安装配置samba
- NSAttributedString的各种设置
- xen虚拟化实战系列(八)之xen虚拟机开机自启动配置
- [Leetcode]Gray Code
- centos 6.x安装gitlab
- IE input file隐藏不能上传文件解决方法(转载)
- 网络字节序和主机字节序
- eclipse无法识别手机
- JAVA中重写equals()方法为什么要重写hashcode()方法
- 递归(三)