2000,n>1500;编写函数计算Image数组中所有'>C语言求中值 , 已知一图像数组unsigned char Image[m][n],其中m>2000,n>1500;编写函数计算Image数组中所有/***********************************************************************
* 函数名称:
* FindMedianValue()
*
*函数参数:unsigned char *pTemplate -模版指针
* int templLen -模版数组长度
*返回值:
*无
*提示: !该函数对模版快速排序,会修改原模版c语言中值法查表函数的值,
*说明:本函数查找数组中值 , 联合quicksort和 partition 函数
*对输入数组长为奇数最好
*长度为偶数时返回c语言中值法查表函数的是中间前一个的值
***********************************************************************/
unsigned char ImgEnhance::FindMedianValue(unsigned char *pTemplate,int templLen)
{
unsigned char MedianValue;
Quicksort(pTemplate,0,templLen-1,templLen);
MedianValue=https://www.04ip.com/post/pTemplate[(templLen-1)/2];
return MedianValue;
}
/***********************************************************************
* 函数名称:
* Quicksort()
*
*函数参数:unsigned char *pTemplate -模版指针
* int templLen -模版数组长度
* int low -数组区间底
* int high -数组区间顶
*返回值:
*空
*
*说明:
***********************************************************************/
void ImgEnhance::Quicksort(unsigned char *pTemplate,int low,int high,int templLen)
{
int pivotpos;
if(lowhigh)
{
pivotpos=Partition(pTemplate,low,high);//对pTemplate[low..high]做划分
if(pivotpos==(templLen-1)/2)
return;
else if(pivotpos(templLen-1)/2)
Quicksort(pTemplate,low,pivotpos-1,templLen);//中值在左区间,对左区间递归排序
else
Quicksort(pTemplate,pivotpos+1,high,templLen);//中值在右区间,对右区间递归排序
}
}
/***********************************************************************
* 函数名称:
* Partition()
*
*函数参数:unsigned char *pTemplate -模版指针
* int i -数组区间底
* int j -数组区间顶
*返回值:
*该区间的一个划分点,该点左边的值都比它小,右边的值都比它大
*
*说明:本函数查找区间划分点,且是将该区间的第一个值放在这个划分点上
***********************************************************************/
int ImgEnhance::Partition(unsigned char *pTemplate,int i,int j)
{
int pivot=pTemplate[i];//用区间的第1个记录作为基准
while(ij)//从区间两端交替向中间扫描,直至i=j为止
{
while(ijpTemplate[j]=pivot) //pivot相当于在位置i上
j--;//从右向左扫描,查找第1个关键字小于pivot的记录pTemplate[j]
if(ij)//表示找到的pTemplate[j]的关键字pivot
pTemplate[i++]=pTemplate[j];//相当于交换pTemplate[i]和pTemplate[j],交换后i指针加1
while(ijpTemplate[i]=pivot)//pivot相当于在位置j上
i++;//从左向右扫描 , 查找第1个关键字大于pivot的记录pTemplate[i]
if(ij)//表示找到了pTemplate[i],使pTemplate[i]pivot
pTemplate[j--]=pTemplate[i];//相当于交换pTemplate[i]和pTemplate[j],交换后j指针减1
}//end while
pTemplate[i]=pivot; //基准记录已被最后定位
return i;
}
c语言编写查表的程序用数组来解决最简单方便,自己参考一下吧
#include stdio.h
int main()
{
char ch;
int i,j,BQ;
char * k1[3][4]={
{"0","0.1","0.2-0.3" ,"0.4-0.6"} ,
{"0.1" ,"0.2-0.3","0.4-0.6","0.7-0.9"} ,
{"0.2","0.4-0.6","0.7-0.9","1.0"} ,
};
printf("地下水状态说明:\n");
推荐阅读
- pdf怎么拉入草图大师,草图大师导出pdf
- flutter开发遇见的坑,flutter开发遇到的问题
- 公众号怎么登陆的,公众号登录怎么登
- php循环查询数据 php循环读取数据
- 如何做好小商场营销,商场如何经营有什么新的建议?
- word如何取掉页眉,word如何去掉页眉上的一条线
- ios12壁纸颜色变了,苹果壁纸变成黑色改变不了了
- gis细化名词解释,arcgis名词解释
- 两人棋牌小游戏有哪些,两人棋牌小游戏有哪些软件