go 选择排序/插入排序/冒泡排序

716 阅读1分钟

slice类型排序实现(选择排序)

//切片排序(选择排序)
func SortSlice(s []int) (se []int) {
	for i:=0;i<len(s)-1;i++{
		for j:=i+1;j<len(s);j++{
			if s[i] < s[j]{
				s[i], s[j] = s[j], s[i]
			}
		}
	}
	se = s
	return
}

map类型排序实现(选择排序)

func SortMap(m map[string]int){

	var s []string
	for key := range m{
		s = append(s, key)
	}
	for i:=0;i<len(s)-1;i++{
		for j:=i+1;j<len(s)-1;j++{
			if m[s[i]] < m[s[j]]{
				s[i], s[j] = s[j], s[i]
			}
		}
	}
	for _,k:=range s{
		fmt.Println(m[k])
	}
}

  • 插入排序

//插入排序
func insertSort(list []int) []int  {

	for i:=1;i<len(list)-1;i++{
		value := list[i]
		q:= i-1
		for j:=q; j>=0;j--{
			if list[j] > value{
				list[j+1] = list[j]
			}else {
				break
			}
		}
		list[q+1] = value

	}
	return list
}

  • 冒泡排序

//冒泡排序
func bubbleSort(list []int) []int {
	var(
		ok bool
	)
	for i:=0;i<len(list);i++{
		ok = false
		for i:=0;i<len(list)-1;i++{
			if list[i] > list[i+1]{
				list[i], list[i+1] = list[i+1], list[i]
				ok = true
			}
		}
		//判断是否交换位置
		if !ok{
			break
		}
	}

	return list
}