go--排序

package main

import "fmt"

// 1.冒泡排序
// 原理:对于数组里的元素,从左到右依次进行比较,如果左边的比右边的大就交换位置
// 这样每走一轮,便可以将一个最大的数放在最右边,就像冒泡一样
func bubble_sort(a []int){
	for i:=0;i<len(a)-1;i++{
		flag:=true
		for j:=0;j<len(a)-i-1;j++{
			if a[j]>a[j+1]{
				a[j],a[j+1] = a[j+1],a[j]
				flag = false
			}

		}
		if flag{
			break
		}
	}
}

// 2.选择排序
// 原理:从左到右,先假设最左边的元素最小,然后和右边的元素依次比较
// 谁小谁就放在最左边,一轮下来,可以确定最小的元素
// 然后再从下一个元素开始
func select_sort(a []int){
	for i:=0;i<len(a)-1;i++{
		min_index := i
		for j:=i+1;j<len(a);j++{
			if a[min_index] > a[j]{
				a[min_index],a[j]=a[j],a[min_index]
			}
		}
	}
}

// 3.插入排序
//原理:依旧是从左到右,让j指向的元素不断地和左边的进行比较
//如果左边比右边的大,那么就交换位置,有点类似于冒泡排序
func insert_sort(a []int){
	for i:=0;i<len(a)-1;i++{
		j := i+1
		for {
			if j>0 && a[j]<a[j-1]{
				a[j],a[j-1]=a[j-1],a[j]
				j -= 1
			}else{
				break
			}
		}
	}
}

  

猜你喜欢

转载自www.cnblogs.com/traditional/p/9241937.html