使用条件运算符取3个数中不大不小的那个数

使用条件运算符取3个数中不大不小的那个数,若a、b、c为3个不相等的整数,m为要求的a、b、c中不大不小的那个数,则可以使用下面的表达式:

m = a>b?b>c?b:a>c?c:a:a>c?a:b>c?c:b;

 

如果使用if-else结构,等效代码如下:

if(a>b){
  if(b>c){
    m = b;
  }else{
    if(a>c){
      m = c;
    }else{
      m = a;
    }
  }
}else{
  if(a>c){
    m = a;
  }else{
    if(b>c){
      m = c;
    }else{
      m = b;
    }
  }
}

时间: 2024-10-20 23:59:07

使用条件运算符取3个数中不大不小的那个数的相关文章

利用最小堆找出10亿个数中最大的10000个数

最小堆 最小堆是一种完全二叉树,特点是根节点比两个子节点都小(或者根节点比子节点都大) 过程 先找10000个数构建最小堆 依次遍历10亿个数,如果比最小堆的最小值大,则替换这个最小值,并重新构建最小堆 最后输入10000个值 时间复杂度 构建最小堆的复杂度为 logn,求出最大m个数会构建m次最小堆,时间复杂度为 m logm, 这里m为10000 进行n次时间复杂度为n,这里n为10亿,总时间复杂度为 n m logm,即10亿 10000 log 10000 其他算法 将十亿个数排序,找出

求两个数中二进制位不同的个数

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main(){ int m = 0, n = 0, x = 0, y = 0; int i = 0, count = 0; printf("请输入m和n:\n"); scanf("%d%d", &m, &n); for (i = 0; i < 32; i++) {  x = (m >> i) & 1;     

算法:找出 n 个数中最小的 k 个数

最简单的方法是将n个元素排序,取出最小的k个元素.这个算法的时间复杂度为 O(nlgn). 然而在输入的n个元素互异的情况下,利用最大堆,我们可以获得时间复杂度为 O(nlgk)的算法. 1 #include <stdio.h> 2 3 #define N 128 4 5 int heap[N], max_size, cur_pos = 1; 6 7 void adjust(int i) { // bottom up 8 int x = heap[i]; 9 int p = i / 2; 10

在N个数中查找前K个最大数

在N个数中查找前K个最大数,主要利用小堆的特点,小堆,是根节点元素小于左右子树元素,查找前K个最大数,先将N个数中的前K个数生成小堆,接着,依次将N中的剩余的数与小堆的根节点相比,如果大于根节点,则根节点换为这个数,再将堆进行生成小堆,依次直到N中无剩余,代码如下 #define N 10000 #define K 100 void Create(int top[],int parent) { int child = 2 * parent + 1; while (child < K) { if

100万个数中找出最大的前K个数

拿到这个题目我想到了很多方法,但是在我想到的方法中,要把在100万个数中找到前k个数,都不适用.最后通过我的不断研究,我想到了我认为最简单的方法,就是利用堆来做这道题目. 下面我分析一下我用堆排序的思路: 1.我先建一个大小为k的堆. 2.把100万中前k个数放到这个堆中. 3.把这个堆调成小堆. 4.把100万个从k到100万之间的数字拿出来和堆的根结点作比较. 5.如果根结点小于这之间的某一个数,就把这个数拿给根结点,然后继续调成小堆.否则继续找 6.直到找完这100万个数,堆中放的就是最大

TODO:排列组合问题:n个数中取m个

排列组合是组合学最基本的概念.所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序.组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序.排列组合的中心问题是研究给定要求的排列和组合可能出现的情况总数. 排列组合与古典概率论关系密切. 本文示例实现的功能是"按顺序"从n个数中取m个数,如1,2,3,4,5,6取5个数字是:1,2,3,4,5:1,2,3,4,6:2,3,4,5,6.示例代码有javascript,php,golang,如果雷同,纯属学术研究,作为一种记

hdu 5265 技巧题 O(nlogn)求n个数中两数相加取模的最大值

pog loves szh II Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 2106    Accepted Submission(s): 606 Problem Description Pog and Szh are playing games.There is a sequence with n numbers, Pog wi

排列组合问题:n个数中取m个(Golang实现)

排列组合是一个基本的数学问题,本程序的目标是输出从n个元素中取m个的所有组合. 例如从[1,2,3]中取出2个数,一共有3中组合:[1,2],[1,3],[2,3].(组合不考虑顺序,即[1,2]和[2,1]属同一个组合) 本程序的思路(来自网上其他大神): (1)创建有n个元素数组,数组元素的值为1表示选中,为0则没选中. (2)初始化,将数组前m个元素置1,表示第一个组合为前m个数. (3)从左到右扫描数组元素值的"10"组合,找到第一个"10"组合后将其变为&

1,2,3,4,5这五个数中作取3个组成互不相等的数

/* ============================================================================ Name : p144.c Author : zhangsan Version : Copyright : Your copyright notice Description : 1,2,3,4,5这五个数中作取3个组成互不相等的数,并算出有多少个 =============================================