I will pick any 5 random cards and arrange them, as in a dictionary, to provide the position of the 6th card. e.g. if I retain 46. My code is as follows:

number the 5 remaining cards as 1 to 5 in increasing order (so 54 is 1, 74 is 2, 86 is 3, 89 is 4 and 103 is 5. Now for the moment lets call these cards by their new numbers). I will arrange 1,2,3,4,5 as in a dictionary to provide the 46th permutation. In such a dictionary 1st permutation will be 12345, 2nd will be 12354, 3rd will be 12435, 4th will be 12453, 5th will be 12534..... and 46th will be 25341. So I will hand him 2,5,3,4,1 in that order i.e. I will hand him 74,103,86,89,54 in that order. He will read it as 2,5,3,4,1 and know I have the 46th card. Since none of these 5 cards is smaller than 46 he will know I have 46.

Lets take another example, I retain 103. I hand him 89,46,54,86,74 which he reads as 5,1,2,4,3 and translates it to 98. Since all 5 cards in his hand are smaller than 98, he adds these 5 missing cards to 98 and gets 103.