answersLogoWhite

0

Use the median-of-three algorithm:

int min (int a, int b) { return a<b?a:b; }

int max (int a, int b) { return a<b?b:a; }

int median_of_three (int a, int b, int c) { return max (min (a, b), min (max (a, b), c)); }

Note that the algorithm does not cater for equal values which creates a problem when any two values are equal, because there are only two values to play with, neither of which can be regarded as being the middle value. If the equal value is the lower of the two values, the largest value is returned if and only if it is the last of the three values, otherwise the lowest value is returned. But when the equal value is the larger of the two values, the largest value is always returned.

Lowest value is equal:

Input: 0, 0, 1 = max (min (0, 0), min (max (0, 0), 1)) = max (0, min (0, 1)) = max (0, 1) = 1

Input: 0, 1, 0 = max (min (0, 1), min (max (0, 1), 0)) = max (0, min (1, 0)) = max (0, 0) = 0

Input: 1, 0, 0 = max (min (1, 0), min (max (1, 0), 0)) = max (0, min (1, 0)) = max (0, 0) = 0

Highest value is equal:

Input: 0, 1, 1 = max (min (0, 1), min (max (0, 1), 1)) = max (0, min (1, 1)) = max (0, 1) = 1

Input: 1, 0, 1 = max (min (1, 0), min (max (1, 0), 1)) = max (0, min (1, 1)) = max (0, 1) = 1

Input: 1, 1, 0 = max (min (1, 1), min (max (1, 1), 0)) = max (1, min (1, 0)) = max (1, 0) = 1

The only way to resolve this problem and produce a consistent result is to sum all three inputs then subtract the minimum and maximum values:

int median_of_three (int a, int b, int c) { return a + b + c - min (min (a, b), c) - max (max (a, b), c)); }

Lowest value is equal:

Input: 0, 0, 1 = 0 + 0 + 1 - min (min (0, 0), 1) - max (max (0, 0), 1) = 1 - 0 - 1 = 0

Input: 0, 1, 0 = 0 + 1 + 0 - min (min (0, 1), 0) - max (max (0, 1), 0) = 1 - 0 - 1 = 0

Input: 1, 0, 0 = 1 + 0 + 0 - min (min (1, 0), 0) - max (max (1, 0), 0) = 1 - 0 - 1 = 0

Highest value is equal:

Input: 0, 1, 1 = 0 + 1 + 1 - min (min (0, 1), 1) - max (max (0, 1), 1) = 2 - 0 - 1 = 1

Input: 1, 0, 1 = 1 + 0 + 1 - min (min (1, 0), 1) - max (max (1, 0), 1) = 2 - 0 - 1 = 1

Input: 1, 1, 0 = 1 + 1 + 0 - min (min (1, 1), 0) - max (max (1, 1), 0) = 2 - 0 - 1 = 1

This makes sense because when we sort 0, 0, 1 in ascending order, 0 is in the middle, while 0, 1, 1 puts 1 in the middle.

User Avatar

Wiki User

8y ago

What else can I help you with?

Related Questions

What are the objects used in dev c plus plus?

Objects in Dev C++ are the same as objects in generic C++, insofar as an object is an instance of a class.


What is the difference of C to C plus plus and Dev C?

C and C++ are both programming languages whereas Dev C++ is an implementation of C/C++. Dev C++ is free, was written in Delphi and includes the MinGW compiler.


Which is better dev c plus plus or Microsoft Visual C plus plus 2008 Express Edition?

Dev c++ is a good tool, but it's outdated. VS is the best for software development especially with shareware license.


Which finger is shanidev?

Shani Dev is associated with the middle finger. In Hindu mythology and astrology, it is believed that this finger represents discipline, responsibility, and karma, which are some of the key attributes associated with Shani Dev.


Formula for z-test?

The z score is calculated from the distance of a value from the distribution center divided by the standard dev. (x-xbar)/st. dev


How do you draw in Dev c plus plus?

Download and install the WinBGIM Devpack. Once installed, you can include graphics.h to draw graphics.


How do you clear the screen in Dev C plus plus compiler?

Clearing screen in DEV C++ compiler :#includeint main(){system("cls");}OR: Permanent solution :-Paste the following text in "C:\Dev-Cpp\include\conio.h" of your system#include#includevoid clrscr(){system("cls");}Then you can use clrscr() as a normal built in function under !!!!!!!!!!!


What nicknames did Dev Anand go by?

Dev Anand's full name is Dharam Dev Anand


Is dev c plus plus same as turbo c plus plus?

No. Turbo C++ is a commercial product that once belonged to Borland Codegear, but is now owned by Embarcadero Technologies, and is now known as Embarcadero C++ Builder. Dev C++ was an open-source project originally developed by Bloodshed Software until 2005. In 2011, the project was taken over by Johan Mes Orwell and is now known as wxDev C++. Dev C++ was originally developed with Delphi, another product once owned by Borland, and is the only real connection between the two.


What is the abbreviation for 'development'?

The abbreviation is "DEV"


What caste is dev surname?

DEV surname are Ramgarhias.


How tall is Dev Johnson?

Dev Johnson is 5' 9".