最大值-最小值
来源:互联网 发布:交换机 mac 编辑:程序博客网 时间:2024/06/04 18:56
求最大最小的时候有点小技巧,就是我们两个两个的比较,把大个跟当前最大比较,小的跟当前最小的比较,这样就会节约一点比较时间,有原来的2*n到3*n / 2。
#include <stdio.h> #include <stdlib.h> //得到最大最小值 int GetMaxMin(int nData[], int nLen, int* pnMax, int* pnMin) { int nMax = nData[0]; //初始化最大值为第一个元素 int nMin = nData[0]; //初始化最小值为第一个元素 int i; //下标控制i //遍历元素,两两比较 for (i = 1; i + 1 < nLen; i += 2) { if (nData[i] > nData[i + 1]) //如果第一个数比第二个数大 { if (nMax < nData[i]) //用第一个数与nMax比较 { nMax = nData[i]; } if (nMin > nData[i + 1]) //用第二个数与nMin比较。 { nMin = nData[i + 1]; } } else //如果第一个数不大于第二个数 { if (nMax < nData[i + 1]) //用第二个数与nMax比较 { nMax = nData[i + 1]; } if (nMin > nData[i]) //用第一个数与nMin比较 { nMin = nData[i]; } } } if (i < nLen) //确定是否都比较了,如果nLen为偶,可能最后一个数没有比较 { if (nMax < nData[i]) //比较最后一个数。 { nMax = nData[i]; } else if (nMin > nData[i]) { nMin = nData[i]; } } *pnMax = nMax; //保存结果 *pnMin = nMin; //返回结果。 return 1; }; //得到最小值 int GetMin(int nData[], int nLen) { int nMin = nData[0]; //初始化nMin为第一个数据 for (int i = 1; i < nLen; ++i) //遍历数据一一同nMin比较 { if (nMin > nData[i]) { nMin = nData[i]; } } return nMin; //返回最小值 } //得到最大值 int GetMax(int nData[], int nLen) { int nMax = nData[0]; //初始化nMax为第二个数据 for (int i = 1; i < nLen; ++i) //遍历数据一一同nMax比较 { if (nMax < nData[i]) { nMax = nData[i]; } } return nMax; //返回nMax } int main() { int nData[10] = {8,2,5,9,3,6,4,7,1,6}; //测试 int nMax = GetMax(nData, 10); int nMin = GetMin(nData, 10); printf("%d %d/n", nMin, nMax); GetMaxMin(nData, 10, &nMax, &nMin); printf("%d %d/n", nMin, nMax); system("pause"); return 0; } #include <stdio.h>#include <stdlib.h>//得到最大最小值int GetMaxMin(int nData[], int nLen, int* pnMax, int* pnMin){ int nMax = nData[0]; //初始化最大值为第一个元素 int nMin = nData[0]; //初始化最小值为第一个元素 int i; //下标控制i //遍历元素,两两比较 for (i = 1; i + 1 < nLen; i += 2) { if (nData[i] > nData[i + 1]) //如果第一个数比第二个数大 { if (nMax < nData[i]) //用第一个数与nMax比较 { nMax = nData[i]; } if (nMin > nData[i + 1]) //用第二个数与nMin比较。 { nMin = nData[i + 1]; } } else //如果第一个数不大于第二个数 { if (nMax < nData[i + 1]) //用第二个数与nMax比较 { nMax = nData[i + 1]; } if (nMin > nData[i]) //用第一个数与nMin比较 { nMin = nData[i]; } } } if (i < nLen) //确定是否都比较了,如果nLen为偶,可能最后一个数没有比较 { if (nMax < nData[i]) //比较最后一个数。 { nMax = nData[i]; } else if (nMin > nData[i]) { nMin = nData[i]; } } *pnMax = nMax; //保存结果 *pnMin = nMin; //返回结果。 return 1;};//得到最小值int GetMin(int nData[], int nLen){ int nMin = nData[0]; //初始化nMin为第一个数据 for (int i = 1; i < nLen; ++i) //遍历数据一一同nMin比较 { if (nMin > nData[i]) { nMin = nData[i]; } } return nMin; //返回最小值}//得到最大值int GetMax(int nData[], int nLen){ int nMax = nData[0]; //初始化nMax为第二个数据 for (int i = 1; i < nLen; ++i) //遍历数据一一同nMax比较 { if (nMax < nData[i]) { nMax = nData[i]; } } return nMax; //返回nMax}int main(){ int nData[10] = {8,2,5,9,3,6,4,7,1,6}; //测试 int nMax = GetMax(nData, 10); int nMin = GetMin(nData, 10); printf("%d %d/n", nMin, nMax); GetMaxMin(nData, 10, &nMax, &nMin); printf("%d %d/n", nMin, nMax); system("pause"); return 0;}
- 最大值&最小值
- 最大值-最小值
- 最大值,最小值
- 最大值最小值
- JAVA int 最大值 最小值
- 计算最大值最小值
- 求最大值与最小值
- 求最大值和最小值
- 求最大值和最小值
- 求最大值最小值
- 数组取最大值最小值
- 最大值和最小值Ex3
- 求最大值最小值
- 多列取最大值或者最小值
- oracle 多列取最大值最小值
- 找最大值与最小值
- 长度,最小值和最大值
- 最大值与最小值
- 利用c++实现单件模式
- 快速排序
- Junit 4
- 计数排序
- 基数排序
- 最大值-最小值
- 查找第i个元素
- MySQL的使用
- tomcat是什么
- javascript 动态改变菜单内容
- 银行家算法的C实现
- Android 网络应用重点———使用HttpURLConnection 上传文件
- 泛型HibernateDAO的实现
- 转:text box 阻止文本框回车键动作