Tu peux swapper les min/max en fin de liste, et itérer sur le tronçon qui reste.
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 int[] list = {12, 5, 6, 89, 5, 2390, 1}; int length = list.length; while (length>2) { int index_min = indexOfMin(list, 0, length); swap(list, index_min, length-1); length--; int index_max = indexOfMax(list, 0, length); swap(list, index_max, length-1); length--; } if (length==2) System.out.println((list[0]+list[1])*0.5); if (length==1) System.out.println(list[0]);
Ou alors, comme le dit prgasp77, utiliser une liste des index à "oublier".
Partager