作业帮 > 综合 > 作业

数据结构,算法,C/C++,编程实现中间数和中位数的查找!

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/08 00:44:10
数据结构,算法,C/C++,编程实现中间数和中位数的查找!
给定很多比如300万个整数,找出排序后(1)中间大小的数、(2)中间位置的数!
例如给定5,4,1,1,1,1,1,2,3,排序后是1,1,1,1,1,2,3,4,5.中间大小的数是3(共1,2,3,4,5五个数)
中间位置的数是1,(总共9个数,第五个位置是1)
int findMiddleValue(int input[N]);
int findMiddlePosition(int input[N]);
#include
#include
#include
#define CutOff (3)
#define NN 1000
typedef int ElementType;
int Swap(ElementType *x,ElementType *y)
{
ElementType tmp=*x;
*x=*y;
*y=tmp;
return 0;
}
/*插入排序*/
int InsertionSort(ElementType A[],int N)
{
int j,P;
ElementType tmp;
for(P=1;P0 && A[j-1]>tmp;j--)
A[j]=A[j-1];
A[j]=tmp;
}
return 0;
}
ElementType Median3(ElementType A[],int Left,int Right)
{
int Center=(Left+Right)/2;
if(A[Left]>A[Center])
Swap(&A[Left],&A[Center]);
if(A[Left]>A[Right])
Swap(&A[Left],&A[Right]);
if(A[Center]>A[Right])
Swap(&A[Center],&A[Right]);
Swap(&A[Center],&A[Right-1]);
return A[Right-1];
}
/*快速排序核心算法*/
int QSort(ElementType A[],int Left,int Right)
{
int i,j;
ElementType Pivot;
if(Left+CutOff