Python实现排序:力扣
Golang实现
一、冒泡排序
//冒泡
func Bubblesort(arry []int)[]int{
if arry == nil{
return nil
}
for i:=0;i<len(arry)-1;i++{
for j:=0;j<len(arry)-i-1;j++{
if arry[j]>arry[j+1]{
arry[j],arry[j+1]=arry[j+1],arry[j]
}
}
}
return arry
}
二、插入排序
//插入
func Insertsort(arr []int)[]int{
if arr == nil {
return nil
}
var j int
for i:=1;i<len(arr);i++{
tmp:=arr[i]
for j=i;j>0;j--{
if(tmp < arr[j-1]){
arr[j] = arr[j-1]
} else{
break
}
}
arr[j]=tmp
}
return arr
}
三、两个有序数组的归并排序
//两个有序数组的归并
func merge(arr1 []int,arr2 []int)[]int{
if arr1==nil && arr2==nil{
return nil
}
if arr1==nil{
return arr2
}
if arr2==nil{
return arr1
}
var arr [] int //保存合并后的数组
point1:=len(arr1)
point2:=len(arr2)
i := 0
j := 0
for i<point1 && j<point2{
if arr1[i]>arr2[j]{
arr=append(arr,arr2[j])
j++
} else{
arr=append(arr,arr1[i])
i++
}
}
fmt.Println(i,j) //7,8
fmt.Println(arr1[i-1],arr2[j]) //91,99
arr=append(arr,arr1[i:]...)
arr=append(arr,arr2[j:]...)
return arr
}
func main(){
arr1:=[]int{-3,3,6,8,16,90,91}
arr2:=[]int{-4,0,3,8,16,17,25,76,99,187,200}
result=merge(arr1,arr2)
fmt.Println(result)
}
四、快速排序
//快速排序
func partion(arr []int,low ,high int)int{
val:=arr[low]
for low<high{
for low<high && arr[high] >= val{
high--
}
arr[low]=arr[high]
for low<high && arr[low] <= val{
low++
}
arr[high]=arr[low]
}
arr[low]=val
return low
}
func Quicksort(arr []int,low,high int)[]int {
par:=partion(arr,low,high)
if low<par-1{
Quicksort(arr,low,par-1)
}
if high>par+1{
Quicksort(arr,par+1,high)
}
return arr
}
五、选择排序
//选择排序
func Selectsort(arr []int)[]int{
if arr==nil{
return nil
}
var min int //保存最小值的下标
for i:=0;i<len(arr)-1;i++{ //趟数
min = i
for j:=i+1;j<len(arr);j++{
if arr[j]<arr[min]{
min=j
}
}
if min!=i{
arr[min],arr[i]=arr[i],arr[min]
}
}
return arr
}