标题:冒泡排序法
只看楼主
linxinqiang
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-10-25
结帖率:66.67%
已结贴  问题点数:20 回复次数:9 
冒泡排序法
我刚学,望大家多多指教!
搜索更多相关主题的帖子: 冒泡 
2010-10-25 23:20
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
得分:3 
程序代码:
#include<stdio.h>
#include<stdlib.h>
void BubbleSort(int *s,int n)
{  /*冒泡排序,入口,数组的首地址,和待排序数的个数。*/
    int i,j,flag;   /*i,j控制循环,flag是个标志*/
    for(i=1;i<=n-1;i++)    /*进行n-1次循环。*/
    {
       flag=0;    /*每次开始flag置零*/
       for(j=2;j<=1+n-i;j++)
       {   /*如果前一个数比后一个数大,交换位置*/
          if(s[j]<s[j-1])
          {
              s[0]=s[j];
              s[j]=s[j-1];
              s[j-1]=s[0];
              flag++;       /*如果有交换flag自加*/
          }
       }
       if(!flag)  return;   /*如果这次循环一次也没交换,说明已经有序,退出*/
    }
   
}
给你。

编程的道路上何其孤独!
2010-10-25 23:34
xx342508809
Rank: 2
等 级:论坛游民
帖 子:89
专家分:51
注 册:2010-7-28
得分:3 
将LS的帽泡法改下~~~~~~~~~~~~
include<stdio.h>
#include<stdlib.h>
void BubbleSort(int *s,int n)
{  /*冒泡排序,入口,数组的首地址,和待排序数的个数。*/
    int i,j,flag;   /*i,j控制循环,flag是个标志*/
    do
    {   
       for(i=1;i<=n-1;i++)    /*进行n-1次循环。*/
      {
          flag=0;    /*每次开始flag置零*/
          for(j=2;j<=1+n-i;j++)
          {   /*如果前一个数比后一个数大,交换位置*/
             if(s[j]<s[j-1])
             {
              s[0]=s[j];
              s[j]=s[j-1];
              s[j-1]=s[0];
              flag=1;     这个是交换次就冒一次泡~~flag等于1就是冒一次泡;
             }
          }
       }
    }while(flag);   
}
2010-10-26 11:56
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
得分:0 
回复 3楼 xx342508809
其实还可以不用#include<stdlib.h>。。。

编程的道路上何其孤独!
2010-10-26 12:26
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
得分:3 
一个比较易记的冒泡排序!
   for(int i=0;i<N;i++)
       for(int j=1;j<N;j++)
        {
             int temp;
            if(a[j-1]>a[j])
             {
                temp=a[j-1];
                a[j-1]=a[j];
                a[j]=temp;
              }
         }
本人觉得很容易记,虽然比安排哨兵多了几次,但也是冒泡排序么!

If You Want Something, Go Get It, Period.
2010-10-26 13:15
cx12588
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:49
专家分:74
注 册:2010-10-15
得分:3 
楼上的大侠是在校生吗?
2010-10-26 13:58
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
得分:3 
冒泡排序对char型的代码



#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10
char str[N]
main()
{
    void sort(char str[]);
    int i,flag;
    for(flag=1;flag==1);
      {printf("\nInpue string:\n");
       scanf("%s",&str);
       if(strlen(str)>N);
         printf("String too long ,input again!");
       else
         flag=0;
      }
      sort(str);
      printf("string sorted:\n");
      for(i=0;i<N;i++)
        printf("%c",str[i]);
}
    void sort(char str[])
    {int i,j;
     char t;
     for(j=1;j<N;j++)
       for(i=0;(i<N-j)&&(str[i]!='\0');i++)
         if(str[i]>str[i+1])
           {t=str[i];
            str[i]=str[i+1];
            str[i+1]=t;
           }
}
 第一次回帖,大家多多指教!!
2010-10-26 16:42
金山游侠
Rank: 2
等 级:论坛游民
帖 子:11
专家分:11
注 册:2010-10-29
得分:3 
冒泡排序 实际就是2重循环 第一个数假设是最小的 找出第二个数后面的最小数放到第一位 第一位就放好了
然后是第二位 找出第二位后最小的 跟第二位比较 小的话 放到第二位
依次。。。 两个知识点 一个是循环 一个是位置的交换
上面有代码 我就不多说了
我也是初学
2010-10-29 17:15
shockwave
Rank: 2
等 级:论坛游民
帖 子:13
专家分:42
注 册:2010-10-31
得分:0 
冒泡是什么
2010-11-01 10:34
hcjsj
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2006-2-15
得分:0 
学习学习!
2012-01-25 20:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-323988-1-1.html




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

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