前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >较快速在一个数组中查找最大值和最小值

较快速在一个数组中查找最大值和最小值

作者头像
chain
发布于 2018-08-02 07:08:33
发布于 2018-08-02 07:08:33
3.8K00
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>
#define MAX 100001
int a[MAX];
int n;
/* 时间复杂度为3*n/2 */


void swap(int i)
{
	if(i==n-1)
		return ;
	if(a[i]>a[i+1])
	{
		int temp=a[i];
		a[i]=a[i+1];
		a[i+1]=temp;
	}
}


void sort()
{
	int i;
	for(i=0;i<n;i++)
	{
		swap(i);
		i++;
	}
}


int main()
{
	int i,j;
	scanf("%d",&n);
	for(j=0;j<n;j++)
		scanf("%d",&a[j]);
	sort();
	int min=0,max=0;
	if(n>1)
		max=1;
	i=min;j=max;
	while(i<n && j<n)
	{
		if(a[min]>a[i])
			min=i;
		if(a[max]<a[j])
			max=j;
		j += 2;
		i += 2;
	}
	if(i<n)
	{
		if(a[n-1]<a[min])
			min=n-1;
		if(a[n-1]>a[max])
			max=n-1;
	}
	printf("%d %d",a[max],a[min]);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013年10月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
剑指OFFER之数组中出现次数超过一半的数字(九度OJ1370)
题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。 输入: 每个测试案例包括2行: 第一行输入一个整数n(1<=n<=100000),表示数组中元素的个数。 第二行输入n个整数,表示数组中的每个元素,这n个整数的范围是[1,1000000000]。 输出: 对应每个测试案例,输出出现的次数超过数组长度的一半的数,如果没有输出-1。 样例输入: 9 1 2 3
用户1154259
2018/01/17
6120
【数据结构与算法】排序算法---探索数据组织的核心技术
https://blog.csdn.net/hsy1603914691/article/details/143217772
风中的云彩
2024/12/25
1020
【数据结构与算法】排序算法---探索数据组织的核心技术
剑指OFFER之调整数组顺序使奇数位于偶数前面找(九度OJ1516)
题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 输入: 每个输入文件包含一组测试案例。 对于每个测试案例,第一行输入一个n,代表该数组中数字的个数。 接下来的一行输入n个整数。代表数组中的n个数。 输出: 对应每个测试案例, 输入一行n个数字,代表调整后的数组。注意,数字和数字之间用一个空格隔开,最后一个数字后面没有空格。 样例输入: 5 1 2 3 4 5 样例输出:
用户1154259
2018/01/18
5730
剑指OFFER之调整数组顺序使奇数位于偶数前面找(九度OJ1516)
华北水利水电大学-C程序设计作业
从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。其中学生信息包括学号、姓名、年龄、地址。要求:程序中有save()、read()函数分别用于保存学生的信息和读取学生的信息。
啊QQQQQ
2024/11/19
460
华北水利水电大学-C程序设计作业
快速查找无序数组中的第K大数?
查找无序数组中的第K大数,直观感觉便是先排好序再找到下标为K-1的元素,时间复杂度O(NlgN)。在此,我们想探索是否存在时间复杂度 < O(NlgN),而且近似等于O(N)的高效算法。
云海谷天
2022/08/09
3280
快速查找无序数组中的第K大数?
常见排序算法
Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。
花落花相惜
2021/11/25
7310
今天发疯,写一下学校的数组作业
如果是对10个数字进行冒泡排序,那么需要进行9轮比较,每轮比较需要进行9+8+...+1次比较
用户11039545
2024/03/28
880
今天发疯,写一下学校的数组作业
十种排序方法
在C语言中,有多种排序算法可供选择,每种都有其独特的特点和应用场景。以下是几种常见的排序算法及其在C语言中的总结:
ljw695
2024/10/18
1250
常用排序算法总结
一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。
老九君
2018/07/27
5590
常用排序算法总结
C算法分析与设计_用户指定数组量并定值,两种算法求最小差的绝对值
利用数组,结合算法。熟练应用两种以上解题方法。 实验内容: 法1:暴力 #include <stdio.h> #include <stdlib.h> int main() { //输入 printf("数组元素个数:\n"); int sum = 0 , i = 0, j; scanf("%d",&sum); int array[sum-1]; printf("以空格分隔,输入数值\n"); for(i = 0; i < sum; i++){
瑞新
2020/07/07
4120
排序算法之我观
笔者今年是xmu大一新生 9月初学编程 学到泡排的时候就对排序这一块深入了解 (也只是很粗浅地学习了一下) 写这篇文章的初衷就是复习一下之前所学,有不足之处请不吝赐教 所谓排序 就是将杂乱无章的数据变得有规律 这其中有五花八门的算法,时间复杂度相同的算法不一而足 目前笔者只给读者展示几种基础算法 (冒泡排序,选择排序,插入排序,快速排序,基数排序,希尔排序,归并排序) (之所以没有介绍堆排序的原因是笔者也不是很懂这方面,大一上还没学数据结构) 有低效但好用,高效但不好写之类的 1.冒泡排序(Bubble Sort) 相信大家对这个应该也不陌生吧 应该要熟到半分钟就能把模板打出来 具体运作过程如下: 比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。 这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 分析: 平均时间复杂度:两重循环:o(n^2) 稳定的算法 上代码(笔者目前只学一门c,IDE是cb) 图源:https://blog.csdn.net/qq_39741605/article/details/80821595
glm233
2020/09/28
4110
排序算法之我观
各种基本算法实现小结(五)—— 排序算法
* 选择排序 |____简单选择排序 |____堆排序 |____归并排序 * 交换排序 |____冒泡排序 |____快速排序 * 插入排序 |____直接插入排序 |____折半排序 |____希尔排序 * 分配排序 |____箱排序 |____基数排序
阳光岛主
2019/02/20
3920
c语言牛客网64-114题基础练习
如烟花般绚烂却又稍纵即逝
2024/11/26
1640
c语言牛客网64-114题基础练习
leetcode Sum 系列----寻找和为定值的多个数
july 大神有个程序员编程艺术系列,第五章《寻找和为定值的多个数》,现在我们站在大牛的肩膀上,对leetcode上n个数求和的系列问题做个阶段性总结。
流川疯
2019/01/18
4.9K0
SDUT 2019 级程序设计基础(B)II 实验6–动态规划
在下面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或 右下走。只需要求出这个最大和即可,不必给出具体路径。 三角形的行数n大于1小于等于100,数字为 0 – 99 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
Here_SDUT
2022/06/29
3250
SDUT 2019 级程序设计基础(B)II 实验6–动态规划
【海贼王的数据航海】排序——冒泡|快速|归并排序|总结
基本思想:所谓交换,就是根据序列中两个记录的键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。
枫叶丹
2024/06/04
1020
【海贼王的数据航海】排序——冒泡|快速|归并排序|总结
C语言经典编程题100例 31~40
31、题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
C you again
2022/08/22
1.4K0
C语言经典例题100
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
C语言与CPP编程
2021/04/02
2.9K0
C语言经典例题100
如何提高编程能力?(中)
函数方程: y - f2 = (f2 - f1) / (x2 - x1)(x - x2) 化简得: x=(f2x1-f1x2)/(f2-f1)
公众号guangcity
2019/09/20
8340
(六)算法基础——动态规划
        在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或右下走。只需要求出这个最大和即可,不必给出具体路径。三角形的行数大于1小于等于100,数字为 0 - 99
小点点
2022/12/12
2430
(六)算法基础——动态规划
相关推荐
剑指OFFER之数组中出现次数超过一半的数字(九度OJ1370)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验