求数组中第二最大数

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 10

// 找出数组中第二个最大的数
int findSecMax(int arr[], int n)
{
	const int MINNUMBER = -32767;
	int sec_max, max;
	sec_max = MINNUMBER;
	max = arr[0];
	for (int i = 1; i < n; i++)
	{
		if (arr[i]> max)
		{
			sec_max = max;
			max = arr[i];
		}
		else
		{
			if (arr[i] > sec_max)
			{
				sec_max = arr[i];
			}
		}
	}

	return sec_max;
}

void main()
{
	int arr[N], i,sec_max;
	srand((unsigned int)time(NULL));
	for (i = 0; i < N;i++)
	{
		arr[i] = rand() % 100;
		printf("%4d", arr[i]);
	}

	sec_max = findSecMax(arr, N);

	printf("\n第二个最大的数为:%d\n",sec_max);

	system("pause");
}
时间: 2024-09-24 01:35:38

求数组中第二最大数的相关文章

查找数组中第二大的数值

题目:写一个函数找出一个整数数组中,第二大的数.[Mirosoft] 解答: int FindSecondMaxValue(int src[], int count){    int max = 0;    int secondMax = 0;    if (count==0) return secondMax;    if (count==1)    {        return src[0];    }    else if (src[0] > src[1])    {        ma

C++通过自定义函数找出一个整数数组中第二大数的方法

  本文实例讲述了C++通过自定义函数找出一个整数数组中第二大数的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 const int MINNUMBER = -32767 ; //2字节的Int 0x8000-1, //4字节的Int 0x80000000-1 -2147483647 int find_sec_max( int data[] , int count) { int

方法-求数组中所有几何对象的面积之和

问题描述 求数组中所有几何对象的面积之和 方法签名如下: public static double sumArea(GeometricObject[] a)编写测试程序,创建三个对象 (一个圆,一个三角形,一个矩形)的数组.并使用sumArea方法求它们的总面积. 解决方案 GeometricObject[] gobj = new GeometricObject[3]; gobj[0] = new Triangle(new Point(1.0, 2.0), new Point(1.0, 1.0)

深入线性时间复杂度求数组中第K大数的方法详解_C 语言

求数组中第K大的数可以基于快排序思想,步骤如下:1.随机选择一个支点2.将比支点大的数,放到数组左边:将比支点小的数放到数组右边:将支点放到中间(属于左部分)3.设左部分的长度为L,当K < L时,递归地在左部分找第K大的数当K > L时,递归地在有部分中找第(K - L)大的数当K = L时,返回左右两部分的分割点(即原来的支点),就是要求的第K大的数以上思想的代码实现如下: 复制代码 代码如下: /**线性时间复杂度求数组中第K大数** author :liuzhiwei ** data 

数组中第二大数

//找出数组中第二大数. // #include <iostream> using namespace std; int find_second_max(int data[],int count) { int max,s_max=0; max=data[0]; for (int i=1;i<count;i++) { if (max<data[i]) { s_max=max; max=data[i]; } else if(max>data[i] &&(s_max

Java求数组中连续n个元素使其和最大

给定一个数组,求出数组中连续的一些元素使其和的值最大.如果所有元素都为正数,显然整个数组即为所求的.如果所有元素的值为负数,则所求的最大值为0. 这是在编程珠玑上看到的,其时间复杂度由O(n3)减为O(n)了. java代码 package cn.lifx.test; public class MaxSum { public static void main(String[] args) { int[] arr = new int[]{31, -41, 59, 26, -53, 58, 97,

求数组中最长递增子序列的解决方法_C 语言

存储扩展算法n2编程c 写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中的最长递增子序列的长度.例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长的递增子序列为1,2,4,6 或者 -1,2,4,6.(编程之美P198-202)分析与解法根据题目的要求,求一维数组中的最长递增子序列,也就是找一个标号的序列b[0],b[1],-,b[m](0 <= b[0] < b[1] < - < b[m] < N),使得array[b[0]]<array[b[1

求数组中只出现一次的数字的算法

题目: 一个整型数组里除了两个数字以外, 其他的数字都出现了两次. 请写程序找出这两个只出现一次的数字. 如果从头到尾依次异或数组中的每一个数字, 那么最终的结果刚好是那个只出现一次的数字. 根据结果数组二进制某一位为1, 以此分组, 为1的一组, 为0的一组, 再重新进行异或. 最后得出两个结果. 时间复杂度O(n). 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*

对“求数组中所有和为某固定数的所有数对”的算法的简单思考

一.题目描述 有一个数组a[1000],里面存放了1000个整数,请找出该数组中所有和为M的数对.例如数组为- 1,2,4,6,5,3,4,2,9,0,8,3,那么和为8的数对有(-1,9),(2,6),(4,4),(5,3),(5,3),(0,8). 二.最普通的算法 在不可率复杂度的情况下,对于这个问题的最简单的算法如下: private static List<int[]> UseNormalWay(int[] arr, int sumTotal) { List<int[]>