#include<stdio.h>
void sort(int a[],int n)
{
int i,j,t,t1;
for(i=0;i<n;i++)
for(j=0;j<n-1-i;j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
int main()
{
int i,j,num[4][4]={{0,2,1,3},{2,0,4,2},{2,4,0,5},{6,2,1,0}},temp[256],k;
printf("请输入友好邻居数:");
scanf("%d",&k);
for(i=0;i<4;i++)
{
printf("家庭%d:",i+1);
for(j=0;j<4;j++)
temp[j]=num[i][j];
sort(temp,4);
for(j=0;j<k;j++)
printf("%d ",temp[j]);
printf("\n");
}
}
你说的应该是map
用HashMap存下标和值
然后对map进行排序,用一个数组是无法实现的
看看这个行不行
#include<stdio.h>
void sort(int a[],int n)
{
int i,j,t,t1;
for(i=0; i<n; i++)
for(j=0; j<n-1-i; j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
int main()
{
int i,j,num[4][4]= {{0,2,1,3},{2,0,4,2},{2,4,0,5},{6,2,1,0}},temp[256],k;
printf("请输入友好邻居数:");
scanf("%d",&k);
for(i=0; i<4; i++)
{
printf("家庭%d:",i+1);
for(j=0; j<4; j++)
temp[j]=num[i][j];
sort(temp,4);
for(j=0; j<k; j++)
{
// printf("%d ",temp[j]);
}
//printf("\n");
for(j=0; j<k; j++)
{
printf("[%d][%d] ",i,j);
}
printf("\n");
}
}
这样?
#include<stdio.h>
void sort(int a[],int n)
{
int i,j,t,t1;
for(i=0; i<n; i++)
for(j=0; j<n-1-i; j++)
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
int main()
{
int i,j,h,cout=0,num[4][4]= {{0,2,1,3},{2,0,4,2},{2,4,0,5},{6,2,1,0}},temp[256],k;
printf("请输入友好邻居数:");
scanf("%d",&k);
for(i=0; i<4; i++)
{
printf("家庭%d:",i+1);
for(j=0; j<4; j++)
temp[j]=num[i][j];
sort(temp,4);
for(j=0; j<k; j++)
{
printf("%d ",temp[j]);
}
//printf("\n");
for(j=0; j<k; j++)
{
//printf("[%d][%d] ",i,j);
}
printf("\n");
}
for(h=0; h<k; h++)
{
for(j=0; j<4; j++)
{
for(i=0; i<4; i++)
{
if(temp[h]==num[i][j])
{
printf("%d %d ",i,j);
//h++;
cout++;
if(cout%4==0&&cout!=0)
{
printf("\n");
}
}
}
//printf("\n");
}
}
}