简单的结构体应⽤——多组数据的冒泡排序
刚开始学C语⾔,我们都做个⼀个排序的简单练习:
输⼊⼀排数,进⾏从⼤到⼩排序,输出最⼤/最⼩值。
此类问题我们⼀般使⽤冒泡排序解决:
#define n 10
int i,j,n,a[10]={1,2,3,4,5,6,7,8,9,0};
for(i=1;i<n;i++)
for(j=0;j<n-ilj++)
{
t=a[i];
a[i]=a[i+1];
a[i+1]=i;
}
以上就是冒泡排序的算法,那么如果要对多组数据进⾏排序呢?
⽐如有⼀个学⽣信息表,需要按照学⽣成绩进⾏排序,但要保证学⽣信息不会混乱,这⾥可以使⽤结构体的办法:
在这⾥,以北京某⾼校⼀道研究⽣⼊学考试题为例:
题⽬描述
第⼀⾏输⼊⼀个数n,1 <= n <= 1000,下⾯输⼊n⾏数据,每⼀⾏有两个数,分别是x y。输出⼀组x y,该组数据是所有数据中x最⼩,且在x相等的情况下y最⼩的。
输⼊描述:
输⼊有多组数据。
每组输⼊n,然后输⼊n个整数对。
输出描述:
输出最⼩的整数对。
⽰例1
输⼊
5
3 3
2 2
5 5
2 1
3 6
输出
append翻译
2 1
通过结构体排序的⽅式我们可解决此题,编译器vc6.0,代码如下:
#include<stdio.h>
#include<string.h>
人体内的大量元素和微量元素struct number //建⽴⼀个结构体
{
int x;
int y;
佛山java吧};
void main()
{
struct number num[1000];//定义⼀个结构体数组,⽤于输⼊x,y struct number t;//定义⼀个结构体变量,⽤于信息交换的中间变量int i,j,n;
scanf("%d",&n);//⾸先输⼊多少组数据
for(i=0;i<n;i++)
冒泡排序代码c语言scanf("%d%d",&num[i].x,&num[i].y);//输⼊x,y
for(i=1;i<n;i++)//冒泡排序,注意结构体变量的使⽤
for(j=0;j<n-i;j++)
{
if(num[j].x>num[j+1].x)//⽐较x
{
t=num[j];//交换数据
num[j]=num[j+1];
openstack中的计算模块是哪个
num[j+1]=t;
}
}
for(i=0;i<n;i++)//当x相同时,⽐较y
{
if(num[i].x ==num[i+1].x)
if(num[i].y>num[i+1].y)
matlab的使用{
t=num[i];//交换数据
num[i]=num[i+1];
num[i+1]=t;
}
}
printf("\n%d %d\n",num[0].x,num[0].y);//输出最⼩整数队
}
结果演⽰:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论