查找数组中第二个最小元素
来源:互联网 发布:淘宝联盟淘客贷款 编辑:程序博客网 时间:2024/06/05 19:51
查找数组中最小的两个元素的过程:
第一种情况:
如果数组的数据是偶数个N:
1、首先假设最小值和次最小值是最前面的两个数
min1=p[0];
min2=p[1];
2、进行循环,进入下一组的两个数中进行比较【3 4】中对比
如果第三个数小于第四个数
那个第三个数跟min1 和min2的数进行比较,重新分配最小值和次最小值
与之雷同第三个数大于第四个数时,一样的操作,
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
第二种情况:
当数组中数的个数是奇数时N,
这一过程和偶数时类似:
1、假设最小值和此最小值的数都是p[0],
这样剩下的数就是偶数了,
2、进入下来那个组数进行比较,重新分配最小值和次最小值
依次按照两个两个的数进行循环,就可以得到最小值和此最小值
。。。。。。。。。。。。。。。。。。。。。。。
这种方法不是进行排序的操作,只是找到数组中的最小值和次最小值
相应的代码:
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <time.h>void PrintArr(int *pnArr, int nLen){ for (int i = 0; i < nLen; i++) { printf("%d ", pnArr[i]); } printf("\n");} //输出数组中的元素void MaxMin(int *pnArr, int nLen, int *pnMin1, int *pnMin2){ if (nLen % 2 == 0) { if (pnArr[0] > pnArr[1]) { *pnMin2 = pnArr[0]; *pnMin1 = pnArr[1]; } //先将数组中的前两个数赋给最小值和此最小值 else { *pnMin2 = pnArr[1]; *pnMin1 = pnArr[0]; } for (int i = 3; i < nLen; i += 2) //进入循环,两个两个的数进行比较得到相应的值 { if (pnArr[i] > pnArr[i - 1]) { if (pnArr[i - 1] < *pnMin1) { *pnMin2 = *pnMin1; *pnMin1 = pnArr[i - 1]; } else if(pnArr[i - 1] < *pnMin2) { *pnMin2 = pnArr[i - 1]; } } else { if (pnArr[i] < *pnMin1) { *pnMin2 = *pnMin1; *pnMin1 = pnArr[i]; } else if (pnArr[i] < *pnMin2) { *pnMin2 = pnArr[i]; } } } } //当时欧数时,进行的求解最小值和此最小值。 else { *pnMin1 = pnArr[0]; *pnMin2 = pnArr[0]; //将数组中的第一个数赋给最小值和次最小值 for (int i = 2; i < nLen; i += 2) { if (pnArr[i] > pnArr[i - 1]) //以下过程和偶数时一样,两个数的进行比较 { if (pnArr[i - 1] < *pnMin1) { *pnMin2 = *pnMin1; *pnMin1 = pnArr[i - 1]; }else if (pnArr[i - 1] < *pnMin2) { *pnMin2 = pnArr[i - 1]; } } else { if (pnArr[i] < *pnMin1) { *pnMin2 = *pnMin1; *pnMin1 = pnArr[i - 1]; } if (pnArr[i] < *pnMin2) { *pnMin2 = pnArr[i]; } } } } //当是奇数的时候,进行求解数组中的值 }int main(){ int nArr[10] = {0,22,1,3,2,6,9,7,4,12}; PrintArr(nArr, 10); int nMin1, nMin2; MaxMin(nArr, 10, &nMin1, &nMin2); printf("最小值为%d 次小值为%d\n", nMin1, nMin2); system("pause"); return 0;}
0 0
- 查找数组中第二个最小元素
- 微软试题:查找数组中最小的k个元素
- 查找最小的k个元素(数组)
- 在一个数组中查找最大的K个元素或者最小的K个元素
- 关于查找数组中最小的k个元素的解答、updated
- 5.查找最小的k个元素(数组)
- No5、查找最小的 k 个元素(数组)
- 5.查找最小的k个元素(数组)
- 查找最小的k个元素(数组)
- 数组查找最小元素方法
- C语言 查找数组中最大最小元素
- 查找n个数中最小的k个元素
- 寻找数组中最小的K个元素
- 从一位数组中提取最小k个元素
- 找出数组中最小的k个元素
- 找数组中最小的k个元素
- 找出数组中最小的k个元素
- 找出一个数组中最小的K个元素
- 动态规划之Bellman-Ford最短路径
- Lua 语言输出Table详细信息的实现
- 【数据库】SQL注入攻击
- Win7系统快速定位照片及快速查找文档
- Triangle
- 查找数组中第二个最小元素
- ASP.NET MVC5(3)数据从控制器传递给视图
- java基础
- CSR 8670 开启 GAIA 编译 BLUELIB
- 无约束最优化方法学习笔记
- HDU4786 Fibonacci Tree(Kruskal)
- Chapaev and Potatoes (URAL 1809 暴力)
- POJ 1611 The Suspects(并查集)
- 基于SSH实现全选删除功能