算法

WuYiLong原创大约 1 分钟算法排序

冒泡排序

思路: 比较相邻元素的大小,比较完的元素不再比较


	arr := [8]int{1,3,2,7,4,5,9,10}
	l := len(arr)
	for i := 0;i<l;i++ {
		for j:=i;j<l;j++ {
			if arr[j]<arr[i] {
				arr[j],arr[i] = arr[i],arr[j]
			}
		}
	}
	fmt.Println(arr)
	// 结果
	[1 2 3 4 5 7 9 10]

选择排序

思路: 先默认数组n第一个为最大值,然后从剩下的数组n-1元素中选出最小的值与之交换,继续重复,直到剩下最后一个

arr := [8]int{1,3,2,7,4,5,9,10}
	l := len(arr)
	for j:=0;j<l;j++ {
		max := arr[j]
		maxIndex := j
		for i := j+1;i<l;i++ {
			if max > arr[i] {
				max = arr[i]
				maxIndex = i
			}
		}
		if maxIndex != j {
			arr[j],arr[maxIndex] = arr[maxIndex],arr[j]
		}
	}
 	fmt.Println(arr)
 	
 	// 结果
 	[1 2 3 4 5 7 9 10]

插入排序

// 插入排序
// 思路: 刚开始把数组n看成只含有一个元素有序数组和n-1个元素无序数组
func TestInsertSort(t *testing.T) {
	arr := [9]int{1,3,2,7,4,5,9,10,0}
	l := len(arr)
	for i := 1;i<l;i++ {
		val := arr[i]
		index := i-1
		for index >=0 && arr[index] > val {
			arr[index+1] = arr[index] 
			index--
		}

		if index != i-1 {
			arr[index+1] = val
		}
	}
	t.Log(arr)
}

// 结果
[0 1 2 3 4 5 7 9 10]

快速排序


上次编辑于:
贡献者: wuyilong