Oh, to reverse by index ... I think this doesn't quite fit in the idea of 
sorts defined by an ordering function purely dependent on the value of the 
element.

I think there may have been a feature request 
<https://github.com/golang/go/issues/47988> for a `slices.Reverse` function 
in golang.org/x/exp/slices - I'm not sure what the status or reasoning is 
on this. FWIW it's not the only approach that might make sense for 
traversing a slice in reverse order, and it can be naive when working with 
e.g. bytes holding utf8.

I think this works but I haven't really thought about edge cases...

`reverse(&s)`

func reverse[T any](s *[]T) {
    z := len(*s)
    for a := 0; a < len(*s)/2; a++ {
        (*s)[a], (*s)[z-a-1] = (*s)[z-a-1], (*s)[a]
    }
}

On Tuesday, December 6, 2022 at 6:54:38 PM UTC-8 hey...@gmail.com wrote:

> Thanks for the quick reply.
>
> But that seems to compare values. I'd like to compare index numbers. The 
> fact that original values follow index number order is a coincidence.
>
> > I think it'd be recommended to look at the generics slices package, 
> which also has a sort
>
> Do you mean golang.org/x/exp/slices? That also seems to only compare 
> values.
>
>
> On Wednesday, December 7, 2022 at 10:45:33 AM UTC+8 harr...@spu.edu wrote:
>
>> Subtly:   
>>      return s[i] > s[j]
>>
>> Is the right sort func
>>
>> I think it'd be recommended to look at the generics slices package, which 
>> also has a sort
>> On Tuesday, December 6, 2022 at 6:39:29 PM UTC-8 hey...@gmail.com wrote:
>>
>>> Hi,
>>>
>>> I have this very simple sorting code:
>>>
>>> s := make([]int, 0, 100)
>>> for i := 1; i <= 20; i++ {
>>>     s = append(s, i)
>>> }
>>> sort.Slice(s, func(i, j int) bool { return i > j })
>>> log.Print(s)
>>>
>>> I expect it to print numbers in reverse order, since items with larger 
>>> index numbers should be at the front. However, at lease in go1.19.3, it 
>>> prints
>>>
>>> [9 1 8 5 16 3 20 2 10 7 12 13 14 15 6 4 19 18 17 11]
>>>
>>> I guess I must have misunderstood how the sort package works, but 
>>> rereading sort's doc multiple time doesn't help answer the question.
>>>
>>> Could anyone shed some light?
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/859114fe-6d0a-4747-9f6d-298392070eefn%40googlegroups.com.

Reply via email to