大家帮我看下我的程序错在哪里了啊!!!谢谢!!!

来源:百度知道 编辑:UC知道 时间:2024/05/13 04:35:40
函数功能:要求按每个数的后三位的大小进行升序排列,如果后三位的数值相等,则按原先的数值进行降序排列.
int aa[200];
void jsSort()
{
int i,j,k,x,y;
for(i=0;i<199;i++)
{
x=aa[i]/1000;//求出aa[i]的千位数
for(j=i+i;j<200;j++)
{
y=aa[j]/1000;//求出aa[j]的千位数
if((aa[i]-x*1000)>(aa[j]-y*1000))//减去千位数后对剩余的百位数进行比较
{
k=aa[j];
aa[j]=aa[i];
aa[i]=k;
}
if((aa[i]-x*1000)==(aa[j]-y*1000))
{
if(aa[i]<aa[j])
{
k=aa[j];
aa[j]=aa[i];
aa[i]=k;
}
}
}
}
}

按照你这种方法改下去,但是把排序的方法改为冒泡法。然后同样去除y=aa[j]/1000;再让a[j]-y的复杂步骤,改为求模(不知道你用的什么方法排序,觉得很乱)

#include <iostream>
#include <stdlib.h>

using namespace std;
const int length = 20;
int aa[length];

//要求按每个数的后三位的大小进行升序排列,
//如果后三位的数值相等,则按原先的数值进行降序排列.
void jsSort()
{
int i,j,k,x,y;
for(i=0;i<length;i++)
{
for(j=0;j<length-1;j++)
{
x=aa[j]%1000;//求出aa[i]的千位数
y=aa[j+1]%1000;//求出aa[j]的千位数
if(x>y)//减去千位数后对剩余的百位数进行比较
{
k=aa[j];
aa[j]=aa[j+1];
aa[j+1]=k;
}
if(x==y)
{
if(aa[j]<aa[j+1])
{
k=aa[j];
aa[j]=aa[j+1];
aa[j+1]=k;
}
}
}