數組排序——内部排序之冒泡排序

package main

func main(){
/*

排序的介绍
排序是将一组数据,依指定的顺序进行排列的过程
排序的分类:
1)内部排序:
指将需要处理的所有数据都加载到内部存储器中进行排序。
包括(交换式排序法、选择排序法和插入式排序法):

交换式排序属于内部排序法,是运用数据值比较厚,依判断规则对数据位置进行交换,以达到排序的目的。
交换式排序法又可分为两种;
1)冒泡排序法(Bubble sort)
2)快速排序法(Quick sort)

交换式排序法-冒泡排序法
冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),一次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从候补移向前部(从下标较大的单元移向下标较小的单元),就像水底下的旗袍一样逐渐向上冒。
因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中摄制一个标志flag判断元素是否进行过交换。从而减少不必要的比较。
下图演示了一个冒泡过程的例子:下面我们举一个具体的案例来说明插入发。我们将五个无序:24,69,80,57,13使用冒泡排序法将其排成一个从小到大的有序数列。
冒泡的算法(规则)
arr = [24,69,80,57,13],让前面的数和后面的数进行比较,如果前面的数大,则交换。
第一轮的排序[外层]
第一次比较:[24,69,80,57,13]
第二次比较:[24,69,80,57,13]
第三次比较:[24,69,57,80,13]
第四次比较:[24,69,57,13,80]

第二轮排序[外层]
第1次比较:[24,69,57,13,80]
第2次比较:[24,57,69,13,80]
第3次比较:[24,57,13,69,80]

第三轮排序[外层]
第1次比较:[24,57,13,69,80]
第2次比较:[24,13,57,69,80]

第四轮的排序[外层]
第1次比较:[13,24,57,69,80]

我们总结一把冒泡排序的规则
1.一共回经过arr.length-1次的轮数比较,每弈论将会确定一个数的位置。
2.每一轮的比较次数再逐渐的减少。[4,3,2,1]
3,当发现前面的一个数比后面的一个数大的时候,就进行了交换。
思路分析
(1)先完成能够将最大的数,放到一个最后。
 (2)把第二大的数放在倒数第二个位置。。。



 冒泡排序的
func BubbleSort(arr *[5]int){

    fmt.Println("排序前arr=",(*arr))
    temp := 0//临时变量(用于做交换)
    //完成第一轮排序(外层1次)
    //完成第一轮排序(外层1次)


//冒泡排序...一步一步推导出来的。
for i :=0;i< len(*arr) - 1;i++{
    for j := 0; j < 4;j++{
       if(*arr)[j] > (*arr)[j +1]{//从小到大是这样写,从大到小是将对比运算相反
          //交换
       temp = (*arr)[j]
       (*arr)[j] = (*arr)[j +1]
       (*arr)[j + 1] = temp
      }
    }

 }
 fmt.Println("排序后arr=",(*arr))

}

func main(){
//定义数组
arr := [5]int{24,69,80,57,13}
//将数组传递给一个函数,完成排序

BubbleSort(&arr)
fmt.Println("main arr=",arr)//有序?是有序的。


}

课后练习
要求能够,不看代码,默写代码

2)外部排序法:
数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。
*/

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值