找出数组中第二大的数
#include <stdio.h>void bubble(int * p, int len)
{
int i, j, temp;
for (i = 0; i < len; i++)
{
for (j = 0; j < len -i - 1; j++)
{
if (*(p+j) < *(p+j+1))
{
temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
return;
}
int main(void)
{
int a[] = {5, 100, 32, 45, 21, 67, 32, 68, 41, 99, 13, 71};
int * p = a;
int len = sizeof(a) / sizeof(a);
bubble(p, len);
printf("%d\n", *(p+1));
return 0;
} 排序选出第二个 冒泡排序?学习了 先用冒泡把所有数先从小到打排列好然后输出倒数第二个就好了 先排序效率太低了吧,是最不经济的方法了
int getSecondMaxNumber(int *p , int n)
{
int i , max , second;
max = p;
second = max;
for(i = 1 ; i < n ; ++i) {
if(p > max) {
second = max;
max = p;
}
else {
if(p > second)
second = p;
}
}
return second;
} 本帖最后由 yhcfsr 于 2020-10-13 20:12 编辑
跑得快有糖吃 发表于 2020-10-13 19:49
冒泡排序?学习了
如果只想找第二大,不妨改成,for (i = 0; i < 2; i++)且 if (*(p+j) > *(p+j+1))
这样倒数第2个就是要找的数
没看懂楼主的帖子? 厉害~~~学习一下 c?优秀的楼主 排序sort()
去重unique()
输出索引就好
页:
[1]
2