#include<stdio.h> #include<string.h> #define max 10000
typedef strct { ?? ?int data[max]; ?? ?int length; }Sqlist; //初始化顺序表 void Inlist(Sqlist *l) { ?? ?l->length = 0; } //创建顺序表的记录数据 void Creatlist(Sqlist *l, int x, int n) { ?? ?if (n > max)? ?? ?{ ?? ??? ?printf("wrong"); ?? ?} ?? ?l->length = n; ?? ?l->data[n] = x; } //插入排序 void Insertsort(Sqlist *l) { ?? ?int i,j,t; ?? ?int n = l->length +1; ?? ?for (i = 2;i < l->length;++i) ?? ?{ ?? ??? ?if (l->data[i] < l->data[i - 1])//判断是否是递增序列.不是就进行改变排序 ?? ??? ?{ ?? ??? ??? ?l->data[0] = l->data[i];//以顺序表的第一个数据为监视哨 ?? ??? ??? ?l->data[i] = l->data[i - 1]; ?? ??? ??? ?for (j = i - 2;l->data[0] < l->data[j];--j)//移位 ?? ??? ??? ?{ ?? ??? ??? ??? ?l->data[j + 1] = l->data[j]; ?? ??? ??? ??? ? ?? ??? ??? ?} ?? ??? ??? ?l->data[j + 1] = l->data[0]; ?? ??? ?} ?? ??? ? ?? ?} ?? ?t = n / 2; ?? ?printf("%d", l->data[t]); } //主函数 int main() { ?? ?Sqlist L; ? ? Inlist(&L); ?? ?int n, i = 0, m; ?? ?scanf("%d", &n);//输入数据的个数 ?? ?n = 2 * n; ?? ?for (i = 1;i <= n;i++)//循环构建顺序表 ?? ?{ ?? ??? ?scanf("%d", &m); ?? ??? ?Creatlist(&L, m, i+1);
?? ?} ?? ?Insertsort(&L);//插入排序并得出中位数
?? ?return 0; }
|