package tools //划分 func partition(arr *[]int,left int,right int)int{ privot:=(*arr)[right] i:=left-1 for j:=left;j= right{ return } privot:=partition(arr,left,right) QuickSort(arr,left,privot-1) QuickSort(arr,privot+1,right) } //快速排序2 //找到一个基准,左边是所有比它小的,右边是比它大的,分别递归左右 func QuickSort2(arr *[]int,left int,right int){ if left>= right{ return } privot:=(*arr)[left] i:=left j:=right for iprivot{ j-- } for i(*arr)[j+1]{ temp:=(*arr)[j] (*arr)[j]=(*arr)[j+1] (*arr)[j+1]=temp flag=false lastSwapIndex=j } } sortBorder=lastSwapIndex if flag{ break } } } //插入排序 //将未排序部分插入到已排序部分的适当位置 func InsertionSort(arr *[]int){ for i:=1;i= right{ return } mid:=(left+right)/2 MergeSort(arr,left,mid) MergeSort(arr,mid+1,right) i:=left j:=mid+1 p:=0 temp :=make([]int,right-left+1) for i<=mid && j<=right{ if (*arr)[i]<=(*arr)[j]{ temp[p]=(*arr)[i] i++ }else{ temp[p]=(*arr)[j] j++ } p++ } for i<=mid{ temp[p]=(*arr)[i] i++ p++ } for j<=right{ temp[p]=(*arr)[j] j++ p++ } for i=0;i