数组下标排序
在贪心算法的最优装载问题里,遇到了数组下标排序的问题,需要对重量进行排序,因此写了这个程序,是受到一个博主的启发改写的,链接在后面。
#include <stdio.h>
#define N 10 //数组的长度
int t[N]; //存放下标顺序的数组
void sort(int a[],int n); //下标排序函数
void sort(int a[],int n)
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<n;j++)
{
if(a[t[j]]>a[t[j+1]]) //t[j]就是下标,a[t[j]]就是数据的值
{
int temp = t[j]; //从小到大排序
t[j] = t[j+1];
t[j+1] = temp;
}
}
}
}
int main(void)
{
int n,i;
int a[N] = {0}; //存放数据的数据
printf("请输入数据的个数:");
scanf("%d",&n);
printf("请输入数据:");
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]); //输入数据
t[i] = i; //将下标数组初始化
}
sort(a,n);
printf("元素的下标排序为:");
for(i=1;i<=n;i++)
{
printf("%d ",t[i]);
}
putchar('\n');
return 0;
}
'''
可以看到这里算法复杂度是有点高的,希望有好的方法的伙伴可以评论告诉我呀!
结果:
链接:https://blog.csdn.net/laobai1015/article/details/107568449