Golang的排序和查找
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.排序的基本介绍
排序是将一组数据,依指定的顺序进行排列的过程。排序的分类如下
1>.内部排序
指将需要处理的所有数据都家在到内存存储器中进行排序,其中包括交换式排序法,选择式排序法和插入式排序法。
2>.外部排序法
数据量过大,无法全部加载到内存中,需要借助外部存储进行排序,其中包括合并排序法和直接合并排序法。
二.冒泡排序
1>.冒泡排序基本思想
通过对待排序序列从前向后(从下标较大的元素开始),一次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就像水底下的气泡一样逐渐向上冒。
因为排序过程的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较(优化)。
2>.代码实现
1 package main 2 3 import( 4 "fmt" 5 ) 6 7 func BubbleSort(arr *[8]int){ 8 fmt.Println("排序前arr=",(*arr)) 9 temp := 0 10 11 for i :=0;i<len(*arr) -1;i++{ 12 for j := 0;j<len(*arr)-1 -i;j++{ 13 if(*arr)[j] > (*arr)[j+1]{ 14 temp =(*arr)[j] 15 (*arr)[j] = (*arr)[j+1] 16 (*arr)[j+1] = temp 17 } 18 } 19 } 20 fmt.Println("排序后arr=",(*arr)) 21 } 22 23 24 func main(){ 25 arr := [8]int{14,51,32,98,24,118,35,26} 26 BubbleSort(&arr) 27 fmt.Println("main arr=",arr) 28 }