冒泡排序

int [] array = new int [*] ;

int temp = 0 ;

for (int i = 0 ; i < array.Length - 1 ;i++)

{

for (int j = i + 1 ; j < array.Length ;j++)

{

if (array[j] < array[i])

{

temp = array[i] ;

array[i] = array[j] ;

array[j] = temp ;

}

}

}

可能第一眼看这个会有点看不懂,为了方便理解,我们先来结合图形看一下。


冒泡排序,故名思意,根据常识,依次与相邻的泡泡相比较,小的泡泡会浮在上面,而较大的泡泡会在下面,这里有3个泡泡,一开始,先看这个图1,由大到小向下排列,然后进行第一次排序,第一次排序又有两个小过程,先是大泡跟中泡相比较,因为大泡比中泡大,所以大泡跟中泡交换,过程2,然后再比较大泡跟小泡,因为小泡比大泡轻,所以小泡跟大泡交换。最后看图3,先来比较中泡跟小泡,因为小泡比中泡轻,所以小泡跟中泡交换,再比较中泡跟大泡,因为中泡比大泡轻,所以不用发生交换。

 

 

分析了这个过程,我们再来用数字做下练习,就用今天的日期好了,20,12,7,26

第一次排序:过程1:   20跟12较,12比20小,12与20交换;结果:12,20,7,26

                     过程2:  20跟7比较,7比20小,7与20交换;结果:12,7,20,26

           过程3: 20跟26比较,20比26小,不发生交换;结果:12,7,20,26

第二次排序:过程1: 12跟7比较,7比12小,7与12交换;结果:7,12,20,26

                     过程2:  12跟20比较,12比20小,不发生交换;结果:7,12,20,26

             过程3:  20跟26比较, 20比26小,不发生交换;结果:7,12,20,26

 

结合上面这两个例子,再来看一开始发的算法,就很好理解了,首先进行一次外循环,从第一个数到倒数第二个数,外循环里再进行一次内循环,从第二个数到倒数第一个数。在循环体内两两相比较,前者比后者大,则交换,否则不交换。还有就是冒泡算法,进行最多循环次数是数组长度-1。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值