A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 jing迪 于 2014-3-6 23:42 编辑

ABCD分别等于 5 2 6 7 如果用冒泡排序可以排列大小, 请问怎么从大到小排列输出D=7 C=6 A=5 B=2

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 脸皮猴 于 2014-3-3 10:33 编辑

我觉得一定要用冒泡法的话可以降ABCD的值先存入一个int型数组中,然后对应这个顺序将各个变量的名称存入一个char型数组中,再对int型数组进行冒泡排序的时候,将char行数组中的变量名称也进行一样的调换时钟保证数组中数据的顺序和char型数组中变量的顺时一一对应的。代码如下:(建议你自己可以敲一敲,还有就是这肯定是要理解冒泡)
#include <stdio.h>
void mao_pao(int data[],char name[],int n)
{
        int i,j,temp;
        char name_temp;
        //外循环需要需要n-1次
        for(i=0;i<n-1;i++)
        {
                for(j=0;j<n-i-1;j++)
                {
                        
                        if(data[j]<data[j+1])
                        {
                                //交换 data[j]和 data[j+1]的值
                                temp = data[j];
                                name_temp = name[j];
                                
                                
                                data[j] = data[j+1];
                                name[j] = name[j+1];
                                
                                data[j+1] = temp;
                                name[j+1] = name_temp;
                        }
                }
        }
}
int main()
{
int A=5,B=2,C=7,D=6;
int a[4]={A,B,C,D};
char b[4]={'A','B','C','D'};
int i;
mao_pao(a,b,4);
for(i=0;i<4;i++)
{
    printf("%c=%d\n",b,a);
}

}


评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
多谢 猴子同学 我是不知道 数值跟字母怎么同事换位置,原来利用两个数组就ok了! 小弟新手,望以后多多关照
回复 使用道具 举报
void mao_pao(int data[],char name[],int n)
{
           //外循环需要需要n-1次
        for(int i=0;i<n-1;i++)
        {
                for(int j=0;j<n-i-1;j++)
                {
                        
                        if(data[j]<data[j+1])
                        {
                                //交换 data[j]和 data[j+1]的值
                     data[j]=date[j]+date[j+1];
                                name[j]=name[j]+name[j+1];
                                
                                
                                data[j+1] = date[j]-data[j+1];
                                name[j+1] = name[j]-name[j+1];
                                
                                data[j] = date[j]-data[j+1];
                                name[j] = name[j]-name[j+1];
                        }
                }
        }
}
修改下猴哥的冒泡函数

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
董月峰 发表于 2014-3-3 11:44
void mao_pao(int data[],char name[],int n)
{
           //外循环需要需要n-1次

;P我知道你那个就是不用中间变量来交换两个变量的值·但是建议写程序中别用。这个就是用来应付面试的。李明杰老师在视频里提过。;P
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马