
按属性二,进行排序。
代码一
#include <stdio.h>
#include <stdlib.h>
typedef struct PX
{
char *data; //数据项
int key; //关键字项
}PX;
int main()
{
int i,j;
PX *a[8]={{"无",0},{"A",12},{"0",2},{"0",35},{"B",22},{"A",70},{"B",13},{"B",53}};
for(i=2;i<8;++i)
{
if(a[i]->key<a[i-1]->key)
{
a[0]=a[i]; //将待插人的记灵暂存到监视哨中
a[i]=a[i-1]; //a[1-1]后移
for(j=i-2; a[0]->key<a[j]->key;--j) //从后向前寻找插入位置
{
a[j+1]=a[j]; //记录逐个后移,直到找到插入位置
}
a[j+1]=a[0]; //将a[0]即原a[i],插入到正确位置
}
}
for(i=1;i<8;i++)
{
printf("%c\t",a[i]->data);
}
}
代码二
#include <stdio.h>
#include <stdlib.h>
typedef struct PX
{
char *data; //数据项
int key; //关键字项
}PX;
int main()
{
int i,j,k;
PX *a[8]={{"无",0},{"A",12},{"0",2},{"0",35},{"B",22},{"A",70},{"B",13},{"B",53}},*t;
for(i=1;i<8;++i)
{
k=i;
for(j=i+1;j<=8;++j)
{
if(a[j]->key<a[k]->key)
{
k=j;
}
}
if(k!=i)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
printf("%c\t",a[i]->data);
}
return 0;
}

