注册 登录
编程论坛 C语言论坛

索引数组排序:已知5个元素的整型数组 A 未排序,一个索引数组 B 保存 A 的下标。编写程序,在不改变数组A的情况下,只改变数组 B完成对A的排序。下面这个程

变量V 发布于 2019-11-24 21:09, 3027 次点击
#include<stdio.h>
int main(){
    int a[5],b[5],i,j=1,k,t=0;
    for(i=0;i<5;i++)
        {scanf("%d",&(a[i]));
        b[i]=i;}
    for(i=0;i<4;i++){
        j=i;
        for(k=i+1;k<5;k++)
            if(a[k]<a[j])
            {j=k;t=b[j];b[j]=b[i];b[i]=t;}
    }
    for(i=0;i<5;i++)
        printf("%d",a[i]);
    printf("\n");
    for(i=0;i<5;i++)
        printf("%d",b[i]);
    return 0;
    }
7 回复
#2
变量V2019-11-24 21:12
本人是个初学菜鸡,望大佬指点
#3
朝F2019-11-24 21:24
你想表达啥问题
#4
三尺冰2019-11-24 22:16
对b排完序后,要想有序输出a数组,用a[b[i]]就行了,还有输出数组用个%*d, *是你想要的宽度
这样比较好看

#5
变量V2019-11-25 13:36
回复 3楼 朝F
问题被吞掉了,想问我这个算法有什么问题,拍出来是乱的
#6
变量V2019-11-25 13:38
这个算法好像不太对,排出来是乱的,有大佬看出来错在哪吗
#7
吹水佬2019-11-25 14:38
//if(a[k]<a[j])
if(a[b[k]]<a[b[j]])
#8
三尺冰2019-11-25 22:38
你跑一下,发下结果看看
1