当前位置: 首页>>代码示例>>Golang>>正文


Golang Interface.Len方法代码示例

本文整理汇总了Golang中sort.Interface.Len方法的典型用法代码示例。如果您正苦于以下问题:Golang Interface.Len方法的具体用法?Golang Interface.Len怎么用?Golang Interface.Len使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在sort.Interface的用法示例。


在下文中一共展示了Interface.Len方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: InsertionSort

// InsertionSort performs a simple insertion sort on the sort interface. In the
// case of ByDist it performs generally as fast as sort.Sort() except that it
// can exploit temporal coherence improving performance dramatically when the
// objects have not moved much.
func InsertionSort(data sort.Interface) {
	for i := 0; i < data.Len(); i++ {
		for j := i; j > 0 && data.Less(j, j-1); j-- {
			data.Swap(j, j-1)
		}
	}
}
开发者ID:pombredanne,项目名称:rand,代码行数:11,代码来源:sort.go

示例2: insertionSort

func insertionSort(a sort.Interface) {
	for i := 1; i < a.Len(); i++ {
		for j := i; j > 0 && a.Less(j, j-1); j-- {
			a.Swap(j-1, j)
		}
	}
}
开发者ID:travis1230,项目名称:RosettaCodeData,代码行数:7,代码来源:sorting-algorithms-insertion-sort-2.go

示例3: heapSort

func heapSort(a sort.Interface) {
	helper := HeapHelper{a, a.Len()}
	heap.Init(&helper)
	for helper.length > 0 {
		heap.Pop(&helper)
	}
}
开发者ID:travis1230,项目名称:RosettaCodeData,代码行数:7,代码来源:sorting-algorithms-heapsort-1.go

示例4: TimSort

// TimSort sorts the data defined by sort.Interface.
func TimSort(a sort.Interface) (err error) {
	indexes := make([]int, a.Len())
	for i := 0; i < len(indexes); i++ {
		indexes[i] = i
	} // for i

	err = Ints(indexes, func(i, j int) bool {
		return a.Less(i, j)
	})

	if err != nil {
		return err
	} // if

	for i := 0; i < len(indexes); i++ {
		j := indexes[i]
		if j == 0 {
			continue
		} //  if
		for k := i; j != i; {
			a.Swap(j, k)
			k, j, indexes[j] = j, indexes[j], 0
		} // for j
	} // for i

	return nil
}
开发者ID:psilva261,项目名称:timsort,代码行数:28,代码来源:timsortint.go

示例5: Quicksort

func Quicksort(sortable sort.Interface) {

	partition := func(sortable sort.Interface, lo, hi int) int {
		pivot := hi
		i := lo
		for j := lo; j < hi; j++ {
			if sortable.Less(j, pivot) {
				sortable.Swap(i, j)
				i++
			}
		}
		sortable.Swap(i, hi)
		return i
	}

	var quicksortRecursive func(sortable sort.Interface, lo, hi int)

	quicksortRecursive = func(sortable sort.Interface, lo, hi int) {
		if lo < hi {
			p := partition(sortable, lo, hi)
			quicksortRecursive(sortable, lo, p-1)
			quicksortRecursive(sortable, p+1, hi)
		}
	}

	quicksortRecursive(sortable, 0, sortable.Len()-1)

}
开发者ID:tprost,项目名称:go-practice,代码行数:28,代码来源:quicksort.go

示例6: Sort

func Sort(data sort.Interface) {
	done := make(chan bool)

	go parallelQuickSort(data, 0, data.Len()-1, done)

	<-done
}
开发者ID:CreateChance,项目名称:the-way-to-go_ZH_CN,代码行数:7,代码来源:cglsmr.go

示例7: insertSort

func insertSort(data sort.Interface) {
	r := data.Len() - 1
	for i := 1; i <= r; i++ {
		for j := i; j > 0 && data.Less(j, j-1); j-- {
			data.Swap(j, j-1)
		}
	}
}
开发者ID:ohlinux,项目名称:golang-snippet-cn,代码行数:8,代码来源:sort.go

示例8: Shuffle

// Shuffle sorts data in a randomized order. It uses the default
// Source in math/rand, so if clients want to manipulate the outcome,
// they should call the appropriate functions in math/rand.
//
// TODO: Add ability to use custom Sources.
func Shuffle(data sort.Interface) {
	length := data.Len()

	for i := 0; i < length; i++ {
		i2 := rand.Intn(i + 1)
		data.Swap(i, i2)
	}
}
开发者ID:DeedleFake,项目名称:meiro,代码行数:13,代码来源:shuffle.go

示例9: Insertion

// Insertion sort
func Insertion(a sort.Interface) {
	for i := 2; i < a.Len(); i++ {
		// insert a[j] into sorted slice a[0:j]
		for j := i; j > 0 && a.Less(j, j-1); j-- {
			a.Swap(j, j-1)
		}
	}
}
开发者ID:tornyak,项目名称:goalg,代码行数:9,代码来源:insertion.go

示例10: NewWithIndex

func NewWithIndex(sorter sort.Interface) *WithIndex {
	n := sorter.Len()
	newToOld := make([]int, n)
	for i := range newToOld {
		newToOld[i] = i
	}
	return &WithIndex{sorter, newToOld}
}
开发者ID:kho,项目名称:easy,代码行数:8,代码来源:sort.go

示例11: Insertion

func Insertion(c sort.Interface) {
	var l = c.Len()
	for i := 1; i < l; i++ {
		for j := i; j > 0 && c.Less(j, j-1); j-- {
			c.Swap(j, j-1)
		}
	}
}
开发者ID:damonchen,项目名称:algorithms4,代码行数:8,代码来源:insertion.go

示例12: insertionSort

// Insertion sort
func insertionSort(data sort.Interface) {
	n := data.Len()
	for i := 1; i < n; i++ {
		for j := i; j > 0 && data.Less(j, j-1); j-- {
			data.Swap(j, j-1)
		}
	}
}
开发者ID:BenedictEggers,项目名称:sorts,代码行数:9,代码来源:insertion.go

示例13: reverse

func reverse(seq sort.Interface, firstIndex int) {
	lastIndex := seq.Len() - 1

	numSwap := (lastIndex - firstIndex + 1) / 2
	for i := 0; i < numSwap; i++ {
		seq.Swap(firstIndex+i, lastIndex-i)
	}
}
开发者ID:chai2010,项目名称:permutation,代码行数:8,代码来源:permutation.go

示例14: IsPalindrome

func IsPalindrome(s sort.Interface) bool {
	for i, j := 0, s.Len()-1; i < j; i, j = i+1, j-1 {
		if s.Less(i, j) || s.Less(j, i) {
			return false
		}
	}
	return true
}
开发者ID:ysohta,项目名称:gopl-ex,代码行数:8,代码来源:palindrome.go

示例15: InsertionSort

// Proposition. For randomly ordered arrays of length N with with distinct keys,
// insertion sort uses ~N2/4 compares and ~N2/4 exchanges on the average.
// The worst case is ~ N2/2 compares and ~ N2/2 exchanges and the best case is N-1 compares and 0 exchanges.
func InsertionSort(a sort.Interface) {
	n := a.Len()
	for i := 1; i < n; i++ {
		for j := i; j > 0 && a.Less(j, j-1); j-- {
			a.Swap(j, j-1)
		}
	}
}
开发者ID:samuelyao314,项目名称:mygo,代码行数:11,代码来源:Sort.go


注:本文中的sort.Interface.Len方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。