1.sort 包介绍使用 sort 包进行排序时无需具体考虑使用哪种排序方式 funcinsertionSort(dataInterface,a,bint)funcheapSort(dataInterface,a,bint)funcquickSort(dataInterface,a,b,maxDepthint)sort.Interface 接口定义了三个方法。注意 sort 包中接口 Interface 这个名字,是
标准库 unsafe 包 1.unsafe 包简介在 unsafe 包中,只提供了三个函数,两个类型 funcAlignof(xArbitraryType)uintptrfuncOffsetof(xArbitraryType)uintptrfuncSizeof(xArbitraryType)uintptrtypeArbitraryTypeinttypePointer*ArbitraryType 通过 unsafe 包,
标准库 reflect1.reflect 简介一个接口类型的变量存储了 2 个信息,值和类型,reflect.TYpeOf()和 reflect.VlueOf(),返回被检查对象的类型和值。当调用 reflect.TypeOf(x)时,x 被当作一个接口变量来处理,然后 reflect.TypeOf()对接口变量进行拆解,返回其反射类型信息 reflect.Type 和 reflect.Value 还有许多其他检查和操作方
排序算法性能对比排序方法最好时间平均时间最坏时间辅助存储稳定性备注简单选择排序 O(n^2)O(n^2)O(n^2)O(1)不稳定 n 小时较好直接插入排序 O(n)O(n^2)O(n^2)O(1)稳定大部分已有序时较好冒泡排序 O(n)O(n^2)O(n^2)O(1)稳定 n 小时较好希尔排序 O(n)O(nlogn)O(ns)1<s<2O(1)不稳定 s 是所选分组快速排序 O(nlogn)O(nlogn)O(n^2
堆排序堆是一种特殊的树形数据结构,其每个节点都有一个值,通常提到的堆都是指一棵完全二叉树,根节点的值小于或者大于两个子结点的值,同时,根节点的两个子树也分别是一个堆堆排序是一树形选择排序,再排序过程中,将 R[1...n]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲节点和孩子节点之间的内在关系来选择最小的元素堆一般分为大顶堆和小顶堆 i 两种不同的类型.对于给定 n 个记录的序列(r(1),r(2
希尔排序希尔排序也称为缩小增量排序,它的基本原理如下:首先将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插入排序,待整个排序序列"基本有序"后,最后再对所有元素进行一次直接插入排序.具体步骤如下:选者一个步长序列 t1,t2...,tk,满足 ti>tj,tk=1 按步长序列个数 k,对待排序序列进行 k 趟排序每趟排序,根据对应的步长 ti,将待排序列分割成 ti
快速排序快速排序是一种非常高效的排序算法,它采用"分而治之"的思想,把大的拆分为小的,小的再拆分为更小的,其原理如下:对于一组给定的记录,通过一趟排序后,将原序列分为两部分,其中前一部分的所有记录均比后一部分的所有记录小,然后再一次对前后两部分的记录进行快速排序,递归该过程,直到序列中的所有记录均有序为止具体而言,算法的步骤如下:(1)将=分解:将输入的序列 array[m..n]划分为两个非空子序列