如何实现不改变数组的位置,输出数组元素的大小顺序?

来源:百度知道 编辑:UC知道 时间:2024/07/08 21:04:40
例如:已知数组int w[7]={7,5,3,2,9,10,4}
需要输出的数组为int t[7]={3,2,6,1,0,4,5}。即w按从小到大的顺序排列的下标。不改变w的顺序。

#include <stdio.h>

template <class Type>
void Swap(Type &a,Type &b){ //交换
Type temp = a;
a = b;
b = temp;
}

void sort(int a[],int n,int index[]){ //对数组a排序,排序后下标存在index中
int i,j;

for(i=0;i<n;i++){
for(j=n-1;j>i;j--) //交换排序
if(a[index[i]]>a[index[j]])
Swap(index[i],index[j]);
}
return;
}

void output(int a[],int n,int index[]){ //输出排序结果
int i;
for(i=0;i<n;i++)
printf("%d ",a[index[i]]);
printf("\n");
}

void Output(int a[],int n){ //输出数组a
int i;
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}

int main(){
int a[100],index[100];
int i,n;
char *addr="gdgzzch.blog.163.com";
printf("本程序来自:%s\n",addr);

printf("请输入数组元素数目:");
scanf("