为了账号安全,请及时绑定邮箱和手机立即绑定

C语言指针入门:从零掌握核心概念

zhenghui@zhlinux:~/codeProject/11指针$
zhenghui@zhlinux:~/codeProject/11指针$ cat find_tow_larget.c
#include <stdio.h>
#define ARRAY_SIZE(array) ((int) (sizeof(array) / sizeof(array[0]) ))

/*
 * 查找最大值和第二大值
 * */
void find_tow_largest(int a[],int n,int *largest,int *second_largest)
{

    // 1、寻找最大值
    *largest = a[0];
    // 记录最大值的位置
    int maxIndex = 0;

    for(int i = 1;i<n;i++)
    {
        if(*largest < a[i])
        {
            *largest = a[i];

            maxIndex = i;
        }
    }

    // 2、寻找第二大值

    // 将最大值替换为最小值
    a[maxIndex] = -1;
    *second_largest = a[0];

    for(int i = 1;i<n;i++)
    {
        if(*second_largest < a[i])
        {
            *second_largest = a[i];
        }
    }

}

/*
 * 通过排序查找最大值和第二大值
 * */
void find_sort_tow_largest(int a[],int n,int *largest,int *second_largest)
{

    // 1、初始化排序
    for(int i = 1;i<n;i++)
    {
        if(a[i-1] > a[i])
        {
            int j = i - 1;
            int temp = a[i];

            while(j > -1 && temp < a[j])
            {
                a[j+1] = a[j];
                j--;
            }

            a[j+1] = temp;
        }
    }

    *largest = a[n-1];
    *second_largest = a[n-2];

}

int main()
{
    int a[] = {1,5,2,4,7,5,8,234};

    int n = ARRAY_SIZE(a);

    int largest,second_largest;

    //find_tow_largest(a,n,&largest,&second_largest);
    find_sort_tow_largest(a,n,&la
rgest,&second_largest);

    printf("最大值:%d,次大值:%d\n",largest,second_largest);

    return 0;
}
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消