首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

冒泡排序法是如何一回事

2012-04-20 
冒泡排序法是怎么一回事?前几天老师讲过,我没听,最好举个例子,谢谢了。[解决办法]C/C++ code#includeiostr

冒泡排序法是怎么一回事?
前几天老师讲过,我没听,最好举个例子,谢谢了。

[解决办法]

C/C++ code
#include<iostream>using namespace std;template<typename T>void sort(T a[]){    int i,j;    T t;    for(j=0;j<5;j++)    {        for(i=0;i<5-j-1;i++)            if(a[i]>a[i+1])            {                t=a[i];a[i]=a[i+1];a[i+1]=t;            }    }    for(i=0;i<5;i++)        cout<<a[i]<<" ";    cout<<endl<<endl;}int main(){    int a[5]={1,9,3,23,45};    float b[5]={2.3,5.1,3.5,6.2,4.1};    long c[5]={23243,54315,3431,6431,4653};    sort(a);    sort(b);    sort(c);    return 0;}
[解决办法]
冒泡排序的方法属于:交换排序的一种。(快速排序也属于)
交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。
注意:
[1] 冒泡排序是就地排序(O(1)),并且是稳定的。
[2] 时间复杂度
 
排序方法平均时间最坏情况最好情况稳定性
冒泡排序O(n^2) O(n^2) O(n) 稳定 

[解决办法]
冒泡一趟会有一个最大的沉到底。

冒泡N-1躺后,就全有序了。
[解决办法]
冒泡排序是一种稳定的排序法,空间复杂度为O(1);
时间复杂度是O(n^2)?
楼主可以翻阅一下书籍。

简单的理解,就是第一个和第二个比,决定是否交换位置,再第二个和第三个比……类推,然后第二轮……直到没有需要比对的记录。
[解决办法]
冒泡排序:
比如 5个数字 12 5 30 23 7
每一次只比较两个数字
第一次 5 12 30 23 7
第二次 5 12 30 23 7
第三次 5 12 23 30 7
第四次 5 12 23 7 30
第五次 5 12 7 23 30
第六次 5 7 12 23 30

[解决办法]
最短的时间是 N-1 也就是 根本不用交换 比如 1 2 3 4
最长的时间是 4 3 2 1 每一个都交换
[解决办法]
基本思想
冒泡法排序:将两个相邻的数字比较,把较大值排在较小值后面,则最大的数排在最后。
n个数字排序,需要进行n-1趟比较,而每趟比较次数都比前一趟减少1次。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
srand((unsigned)time(NULL));
int a[201];
int i;
for(i=1;i<=200;i++)
{
a[i]=rand()%1000;
}
printf("\n下面输出您购买的彩票号码 200注:\n");
int k,temp;
for(k=1;k<200;k++) //冒泡法排序
{
for(i=1;i<200-k;i++)
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
for(i=1;i<=200;i++)
{
printf("%03d ",a[i]);
if(i%10==0)
printf("\n\n");

}
int x;
printf("\n欢迎您进入国家福彩中心3D彩票摇奖系统:\n");
printf("今晚3D开奖号码是:\n");
x=rand()%1000;
int Menoy=0;
printf("%03d\n",x);
for(i=1;i<=200;i++)
{
Menoy=Menoy+2;
if(a[i]==x)
{
printf("恭喜您中奖1000块 中奖号码是%03d\n",x);
printf("此次购买彩票金额为 %d 元 \n",Menoy);
return ;
}
}
printf("此次购彩金额为 %d 元\n",Menoy);
printf("感谢您的使用 您的快乐将是国家福彩时延快速发展的最大动力\n");
return ;
}

热点排行