当前位置: 首页 > news >正文

CSDN每日一练求最小元素 C语言

题目名称:求最小元素
时间限制:1000ms内存限制:256M
题目描述

Suppose an array sorted in ascending order is rotated at some pivot
unknown to you beforehand. (i.e., [0,1,2,4,5,6,7] might become
[4,5,6,7,0,1,2]). Find the minimum element. You may assume no
duplicate exists in the array. (注意:测试用例仅做参考,我们会根据代码质量进行评分)

输入描述:

第一行输入整数n。(1<=n<=10000)表示数组的大小 第二行给出n个整数a.(0<=a<=1e9)

输出描述:

输出答案

示例
输入

5
3 4 5 1 2

输出

1

思路:我们只需要将他存入数组,然后循环数组,找到最小值,然后将它输出出来。
代码如下(编译器是dev,语言是C语言):

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

int solution(int n, int arr[]){
    int result;
    // TODO: 请在此编写代码
    result = arr[0];
    for(int i = 1;i<n;i++){
        if(result>arr[i]){
            result = arr[i];
        }
    }
    return result;
}
int main() {
    int n;
    scanf("%d", &n);
    int *arr;
    arr = (int*)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    int result = solution(n, arr);
    printf("%d", result);
    return 0;
}

在这里插入图片描述
不过上面是在他基础上填写的代码,我们其实感觉还有更快的算法,就是每当输入进来,我就判断是否是最小值,如果是最小值,我们就将它记录下来,这样只要输入完,我们就知道谁是最小值了呢。
该算法本人认为比较优,如果有更好的想法,欢迎q我!
代码如下(编译器是dev,语言是C语言):

#include <stdio.h>
int min,i,n,temp;
int main(){
    scanf("%d",&n);
    scanf("%d",&temp);
    min = temp;
    for(i = 1;i<n;i++){
        scanf("%d",&temp);
        if(min>temp){
            min = temp;
        }
    }
    printf("%d",min);
    return 0;
}

在这里插入图片描述
噗哈哈,咱就是说在理论上,肯定性能上做法二不管是时间复杂度还是空间复杂度都是要小的,因为你做法一弄了一个数组,做法二并没有,直接就三个变量,而且做法1还有一个循环遍历,做法二根本没有,不过我也不知道是什么原因,导致做法二的用时和空间利用均比做法一高!

相关文章:

  • 网站开发的例子/长沙哪里有网站推广优化
  • 做网站怎么复制视频链接/人工智能培训机构排名前十
  • 公众号授权网站/危机公关
  • 衢州建站/全网推广方案
  • 那些域名可以做后缀做网站/什么软件可以发布广告信息
  • 视频网站怎么做可以播放电视剧/今天热搜前十名
  • 【Shell】grep
  • 飞腾桌面腾锐D2000 核心板
  • 实验室装修墙面材质如何选择
  • WuThreat身份安全云-TVD每日漏洞情报-2022-12-22
  • 基于凸多边形最大化的高光谱端体提取算法(Matlab代码实现)
  • 四、Jetson Xavier Nx内置16G emmc刷机、CUDA、SSD启动
  • 【数据结构】深度讲解栈、栈的应用举例、栈和递归的实现教你全面认识栈
  • Spring基础、IOC、SpringMVC
  • 如何给视频添加水印?这三个加水印的方法让你实现
  • 微服务系列 - Zookeeper上篇:入门到精通
  • 设计数据库中常见的规范
  • 登录过程(vuex存储token、token持久化)