有时候我们并不需要重新排序数组,值希望能够在不破坏原数组的情况下,建立一个索引,能够还原其排序的序列。
void getIndex(int Index[],int a[],int n){
int b[100];
int i;
for(i=0;i<n;i++){
b[i]=a[i];
}
[color=red]for(i=0;i<n;i++){
Index[i]=i;
}[/color]
for(i=0;i<n;i++){
int min=[color=red]b[Index[i]][/color];
int J=i;
for(int j=i+1;j<n;j++){
if(min>[color=red]b[Index[j]][/color])
{
min=[color=red]b[Index[j]][/color];
J=j;
}
}
if(i!=J){
[color=red]swap(Index[i],Index[J]);[/color]
}
}
}
红字部分是个很重要需要理解的地方。
void getIndex(int Index[],int a[],int n){
int b[100];
int i;
for(i=0;i<n;i++){
b[i]=a[i];
}
[color=red]for(i=0;i<n;i++){
Index[i]=i;
}[/color]
for(i=0;i<n;i++){
int min=[color=red]b[Index[i]][/color];
int J=i;
for(int j=i+1;j<n;j++){
if(min>[color=red]b[Index[j]][/color])
{
min=[color=red]b[Index[j]][/color];
J=j;
}
}
if(i!=J){
[color=red]swap(Index[i],Index[J]);[/color]
}
}
}
红字部分是个很重要需要理解的地方。