题解 | #小白鼠排队#

小白鼠排队

http://www.nowcoder.com/practice/27fbaa6c7b2e419bbf4de8ba60cf372b

使用指针数组保存帽子颜色,进行字符串的索引排序,提高字符串排序的效率。

索引排序修改了指针数组中指向帽子具体颜色的指针指向,实际存储中帽子颜色顺序并没有改变

#include<stdio.h>
#include<string.h>

#define N 100
#define MAX_LEN 10

// 使用简单选择排序,根据小鼠重量排序,对重量排序的同时,改变小老鼠对应的帽子颜色的位置
// 使用指针数组保存帽子颜色,排序仅修改了指针数组中指向帽子具体颜色的指针指向
// 实际存储中帽子颜色并没有改变
void SortDesc(int weight[],char *str[],int n){
    int i,j,k,temp;
    char *color=NULL;
    for(i=0;i<n-1;i++){
        k=i;
        for(j=i+1;j<n;j++){
            if(weight[j] > weight[k]){
                k=j;
            }
        }
        if(i!=k){
            temp = weight[i];
            color = str[i];
            weight[i]=weight[k];
            str[i] = str[k];
            weight[k]=temp;
            str[k] = color;
        }
    }
}

int main(){
    int n;
    int weight[N];
    char colors[N][MAX_LEN];
    char *str[N];
    scanf("%d",&n);
    for(int i=0;i<n;i++){
// 需要先对指针数组中每个指针指向的内存地址进行初始化,才能对该指针指向的内存地址进行写入
        str[i] = colors[i];  
        scanf("%d %s",&weight[i],colors[i]);
    }
    SortDesc(weight,str,n);
    for(int i=0;i<n;i++){
        printf("%s\n",str[i]);
    }
    
}
全部评论

相关推荐

用微笑面对困难:不是你千万别小看这家公司,他们的预估市值成倍上涨,三次在报告看见这个公司了,总之如果是给股权的话可以试试,未来没准真能发家致富哈哈哈哈
点赞 评论 收藏
分享
牛牛不会牛泪:脉脉太多这种了,纯水军
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务