I tried to use Melanie's great piece of code (Thanks !) for sorting the values I read with 12F675 ...
But the results are ...strange ; the schematic wont work as I wish.
It's something wrong in my code ? Thanks in advance !

Code:
CounterA var BYTE			' Just a BYTE Temporary working variable
DataW var WORD				' Just a WORD Temporary working variable
RawData var WORD [10]			' Array holding ADC Result
............
Main:
For CounterA=0 to 9
ADCON0 = %10001001 
		Pauseus 50			' Wait for channel to setup
	    ADCON0.1 = 1			' Start conversion
		While ADCON0.1=1:Wend		' Wait for conversion
		DataW.HighByte=ADRESH		' Read variable from ADC and save
		DataW.LowByte=ADRESL
		RawData(CounterA)=DataW
Next CounterA
gosub getsort
CounterA=0 	

    if (ADvalue < 650) then
	IF (ADvalue > 450) AND (ADvalue < 640) THEN gosub do_1
	IF (ADvalue > 320) AND (ADvalue < 440) THEN gosub do_2  
	IF (ADvalue > 180) AND (ADvalue < 310) THEN gosub do_3
	IF (ADvalue > 90)  AND (ADvalue < 170) THEN  gosub do_4
	IF (ADvalue < 80)  THEN gosub do_5        
    endif

Goto Main


;=========================
; here are the commands
GetSort:
	If RawData(CounterA+1) < RawData(CounterA) then
		DataW=RawData(CounterA)
		RawData(CounterA)=RawData(CounterA+1)
		RawData(CounterA+1)=DataW
		If CounterA>0 then CounterA=CounterA-2
	endif
	CounterA=CounterA+1
If CounterA<9 then goto GetSort
        DataW=0
	    For CounterA=2 to 9
		DataW=DataW+RawData(CounterA)
		Next CounterA
Advalue=DataW>>3
return