mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-04 07:49:35 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			39 lines
		
	
	
		
			693 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			693 B
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2013 The Go Authors. All rights reserved.
 | 
						|
// Use of this source code is governed by a BSD-style
 | 
						|
// license that can be found in the LICENSE file.
 | 
						|
 | 
						|
// +build !go1.2
 | 
						|
 | 
						|
package language
 | 
						|
 | 
						|
import "sort"
 | 
						|
 | 
						|
func sortStable(s sort.Interface) {
 | 
						|
	ss := stableSort{
 | 
						|
		s:   s,
 | 
						|
		pos: make([]int, s.Len()),
 | 
						|
	}
 | 
						|
	for i := range ss.pos {
 | 
						|
		ss.pos[i] = i
 | 
						|
	}
 | 
						|
	sort.Sort(&ss)
 | 
						|
}
 | 
						|
 | 
						|
type stableSort struct {
 | 
						|
	s   sort.Interface
 | 
						|
	pos []int
 | 
						|
}
 | 
						|
 | 
						|
func (s *stableSort) Len() int {
 | 
						|
	return len(s.pos)
 | 
						|
}
 | 
						|
 | 
						|
func (s *stableSort) Less(i, j int) bool {
 | 
						|
	return s.s.Less(i, j) || !s.s.Less(j, i) && s.pos[i] < s.pos[j]
 | 
						|
}
 | 
						|
 | 
						|
func (s *stableSort) Swap(i, j int) {
 | 
						|
	s.s.Swap(i, j)
 | 
						|
	s.pos[i], s.pos[j] = s.pos[j], s.pos[i]
 | 
						|
}
 |