| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1918 人关注过本帖
标题:排序算法(冒泡)
只看楼主 加入收藏
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
 问题点数:0 回复次数:11 
排序算法(冒泡)
#include<stdio.h>
main()
 {int i,j,temp,n,a[100],flag=1;
   printf("请问你要输入几个排序数:\n");
   scanf("%d",&n);
   printf("请输入你要排序的数值:\n");
   for(i=0;i<n;i++)
    scanf("%d",&a[i]);
  for(i=0;i<n&&flag==1;i++)
  {    flag=0;
   for(j=1;j<n-i;j++)
    if(a[j]<a[j-1])
    {    flag=1;
     temp=a[j-1];
        a[j-1]=a[j];
     a[j]=temp;
    }
  }
  printf("排序后的:\n");
  for(i=0;i<n;i++)
  printf("%d\t",a[i]);
 }
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 算法 冒泡 
2005-04-14 07:39
weier1110
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-7-29
收藏
得分:0 
flag有什么用呢?我没用好象也可以的哦
2006-08-17 20:12
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 

那个flag 当你那个元素的顺序是有序的就不用交换了,加快效率 例如: 1,2,3,5,4,运行 一次内循环就可以了。因为运行完一次,flag就置 0,那外循环也结束了。如果你不用flag那么 以上 5个元素,你就要执行 4+3+2+1次比较,那明显慢了很多


c++/C + 汇编 = 天下无敌
2006-08-17 21:26
ecbtnrt
Rank: 1
等 级:新手上路
威 望:1
帖 子:189
专家分:0
注 册:2006-4-16
收藏
得分:0 
这个也可以发吗,我认为没有必要了吧

我为你痴,为你狂!
2006-09-02 23:35
nick7281
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-11-13
收藏
得分:0 
以下是引用ecbtnrt在2006-9-2 23:35:00的发言:
这个也可以发吗,我认为没有必要了吧

呵呵,还是可以发的,用了那个FLAG的确算法复杂度降低了不少.


2006-11-13 11:32
perfect
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:81
专家分:0
注 册:2006-11-19
收藏
得分:0 
flag用于判断所得序列是否已有序
如果开始已经有序,则只是一次内循环,复杂度为n
如果开始不是有序的,需等到某一时刻,序列为有序时,可像开始有序那样循环一次后提前结束
如 1 2 5 4 3
第一次 1 2 4 3 5
第二次 1 2 3 4 5

但是这样破坏了程序的可读性,而且最坏的情况下复杂度仍为n*n
并没有改变

要提高效率可以改用其它排序算法啊

片言可以明百意 坐驰可以役万里
2006-11-19 22:49
wangdong1027
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-1-20
收藏
得分:0 
我自己也写了一个,
一块看看:
#include<stdio.h>
#include<stdlib.h>
int main()
{int i,j,temp,flag;
int a[5];
printf("input 5number:\n");
for(i=1;i<=5;i++)
scanf("%d",&a[i]);
for(i=1;i<5;i++)
{flag=1;
for(j=1;j<5;j++)
if(a[j]<a[j+1])
{temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=0;
}
if(!flag) continue;
}
printf("the sorted number:\n");
for(i=1;i<=5;i++)
printf("%d ",a[i]);
system("pause");
return 0;
}
2007-01-20 20:31
wangdong1027
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-1-20
收藏
得分:0 
有一个数据结构的群:16373977.
多多捧场
2007-01-20 20:32
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
flag提高不了多少速度
因为程序中与flag有关的语句占用不少程序执行时间

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-02-02 12:19
lanry
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-2-9
收藏
得分:0 

这不是c语言吗,怎么和说书上说的数据结构算法不一样?
初学不懂
请多指教

2007-02-09 16:19
快速回复:排序算法(冒泡)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050878 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved