以一个下标在数组中的值大小为优先级的优先队列,如何定义

如题比如a[5]={1,3,2,4,5}那么0,1,2下标对应的1,3,2那么在优先队列中的顺序为0,2,1... 如题 比如a[5]={1,3,2,4,5}
那么0,1,2下标对应的1,3,2那么在优先队列中的顺序为0,2,1
展开
 我来答
xoaxa
2013-10-22 · TA获得超过8611个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3504万
展开全部

/*

排序前

数组a[]:

36 25 14  9 85 79 64 10 34 51 76 49

数组b[]:

 0  1  2  3  4  5  6  7  8  9 10 11

排序后

数组a[]:

 9 10 14 25 34 36 49 51 64 76 79 85

数组b[]:

 3  7  2  1  8  0 11  9  6 10  5  4

Press any key to continue

*/

#include <stdio.h>
#define N 12

void Show(int a[],int n) {
int i;
for(i = 0; i < n; ++i)
printf("%2d ",a[i]);
printf("\n");
}

int main() {
int i,j,k,t,b[N];
int a[N] = {36,25,14,9,85,79,64,10,34,51,76,49};
for(i = 0; i < N; ++i) b[i] = i; // b[]作为辅助
printf("排序前\n数组a[]:\n");
Show(a,N);
printf("数组b[]:\n");
Show(b,N);
for(i = 0; i < N - 1; ++i) { // 二重循环完成选择排序
k = i;
for(j = i + 1; j < N; ++j) {
if(a[k] > a[j]) k = j;
}
if(k != i) {
t = a[k];
a[k] = a[i];
a[i] = t;
t = b[i]; // 辅助数组同步操作
b[i] = b[k];
b[k] = t;
}
}
printf("排序后\n数组a[]:\n");
Show(a,N);
printf("数组b[]:\n");
Show(b,N); // 现在得到的数组b[],就是你需要的
return 0;
}
追问
虽然你没有看懂我的问题,还是谢谢你
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式