冒泡排序算法
1.分析问题:
将前n个数字分别进行比较,最大的移动到了最后;
下一次,将前n-1个数字分别进行比较,最大的移动到了倒数第二位;
依此类推。
2.设计算法:
1)第一次排序:索引0至len(数组)-1左右元素进行比较,最大的数排在最后
2)第二次排序:索引0至len(数组)-2左右元素进行比较,最大的2个数从小到大排在最后
...
3)第n次排序: 索引0至len(数组)-n左右元素进行比较,最大的n个数从小到大排在最后
3.编写程序:
func main(){
var arr[4] int={1,-2,3,-4} //len(arr)=4
//外层循环控制比较完一轮,减去不需要比较的下标
//内层循环相邻的数比较交换
for n := 1; n < len(arr)-1; n++{
for j := 0; j <len(arr)-n; j++{
if arr[j] > arr[j+1]{
arr[j],arr[j+1] = arr[j+1],arr[j]
}
}
}
}
4.调试程序
[-4 -2 1 3]