数组排序(来自我的百度知道)
来源:互联网 发布:知乎 精华 护肤 编辑:程序博客网 时间:2024/05/16 00:40
【提问】
对已知数组a的元素按从小到大的顺序"连续"编号存于数组b, 即a[i]的编号存于b[i]. 要求: 相同的元素具有相同的编号. 例:
数组a为: 7, 6, 3, 7, 7, 8, 3, 3, 0, 7
数组b为: 4, 3, 2, 4, 4, 5, 2, 2, 1, 4
【解答】
//以下代码在vs2005中编译通过,希望大家指正,欢迎大家提出更好的解答!谢谢!
#include<stdio.h>
#define SIZE 10
typedef struct{
int a; // 记录数组中的元素的值
int pos; //记录数组中元素的位置
}List;
void paixu(List L[],char mode,int len); //排序 min——max,mode是按照位置还是值排序
int main(int argv,int argc)
{
//以下a,b并没有(真正意义上的)排序,使用la,lb模拟a,b排序的;
int a[SIZE]={7,6,3,7,7,8,3,3,0,7};
int b[SIZE];
List la[SIZE];
List lb[SIZE];
int i=0;
printf("数组a排序前:");
for (i=0;i<SIZE;i++)
{
la[i].a=a[i];
la[i].pos=i;
printf("%d,",a[i]);
} //将a赋值给la中的a,并用pos记录a中元素在la的位置;
paixu(la,'a',SIZE); //模拟a排序
printf("/n数组a排序后:");
for (i=0;i<10;i++)
printf("%d,",la[i].a);
lb[0].a=1;
lb[0].pos=la[0].pos;
for (i=1;i<SIZE;i++)
{
if (la[i].a>la[i-1].a)
lb[i].a=lb[i-1].a+1;
else
lb[i].a=lb[i-1].a;
lb[i].pos=la[i].pos;
} //计算lb中a的值,即是数组b中元素的值
printf("/n数组b排序前: ");
for (i=0;i<SIZE;i++)
printf("%d,",lb[i].a);
paixu(lb,'p',SIZE); //模拟b排序
printf("/n数组b排序后:");
for (i=0;i<SIZE;i++)
{
b[i]=lb[i].a;
printf("%d,",b[i]);
}
printf("/n");
return 0;
}
//
void paixu(List l[],char mode,int len)
{
int i=0;
int j,tags;
List temp;
if (mode=='a')
{
for (i=0;i<len-1;i++)
{
tags=1; //标记是否进行了交换
for( j=len-1;j>i;j--)
if (l[j].a<l[j-1].a)
{
temp=l[j];
l[j]=l[j-1];
l[j-1]=temp;
tags=0; //有交换
}
if (tags) break; //无交换,退出循环
}
}
else if(mode=='p')
{
for (i=0;i<len-1;i++)
{
tags=1;
for( j=len-1;j>i;j--)
if (l[j].pos<l[j-1].pos)
{
temp=l[j];
l[j]=l[j-1];
l[j-1]=temp;
tags=0;
}
if (tags) break;
}
}
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
海螺:http://hi.baidu.com/hailuojj keepingdo:http://hi.csdn.net/keepingdo 联系我:xhl_hylo@foxmail.com
- 数组排序(来自我的百度知道)
- 一片关于java的论文(来自百度知道)
- 正则表达式 Java(来自百度知道)
- FindResource 来自百度知道
- List 的remove 返回值的理解 来自百度知道
- SQL配置--来自百度知道的一位人士的回答
- final、finally、finalize的区别——来自百度知道
- 个人对数组排序(来自庞果网)的解法
- 网页播放视频解决代码(来自百度知道)
- 网页播放视频解决代码(来自百度知道)
- 手机制式如何理解(来自百度知道)
- Map.Entry(来自百度知道,下附地址)
- 数组排序(来自庞果网)
- 转贴 来自百度知道 关于samba
- java.util.ConcurrentModificationException解决办法 来自百度知道
- 集群的概念(来自百度词条)
- 语义的概念 (来自百度百科)
- 百度 我要让你知道我的存在
- XML Serialization Introduction
- sprint目标
- 我想在cookies写入电脑(私用的)后,不删除该cookies,我第二次想要读取到该cookies,ASP.Net代码该怎么写?
- Java学习笔记④--Helloworld
- 类型“Button”的控件“Button1”必须放在具有 runat=server 的窗体标记内。
- 数组排序(来自我的百度知道)
- JavaScript语法集锦(二)
- 65个源代码网站 /开发人员一定要加入收藏夹的网站
- C# webBrowser禁止在新窗口打开,强制在本窗口打开
- JavaScript语法集锦(三)
- test
- FastCGI中文参考手册
- Struts中DispatchAction的应用
- JavaScript语法集锦(四)