(课外拓展)排序

排序的核心就是对比和换位,经过多次对比和必要的换位,以达到结果是有序的效果。

关于数据换位:

在执行换位时,不可以让单纯的两个变量的值分别赋值给彼此。

如果只是让两个变量的值分别赋值给彼此,由于代码是依次执行的,一旦某个变量被赋予新的值,则其原来的值就会丢失;

为了保证在交换值的过程中,变量的原值不会丢失(被重新赋值导致的覆盖),可以使用第三个变量临时存储变量的值

int a=1;

int b=7;

int temp;(重新定义一个新的临时变量)

temp = a;(将a的值进行保存)

a = b;(将b的值赋值给a)

b = temp;(将a的值也就是temp赋值给b,完成换位)

其实,也可以不使用临时便明亮,而使用算数运算来实现换位(语义较差)

int a = 7;

int b = 1;

a=a+b;a(8),b(1)

b=a-b;a(8),b(7)

a=a-b;a(1),b(7)

2冒泡排序

反复对比相邻的两个元素,如果与预期的顺序(升序)不符合,则换位

8673(86预期不符,换成8673)还是预期不符再次进行换位

换成6783,还是不符合换成6738。

第一轮结束之后,再次重复刚才的操作,进行第二轮对比

6378变成6738变成6378变成6378。

在执行第三轮

6378变成3678变成3678变成3678。

每一轮都能够保证将最大的数字移动到右侧,即第一轮循环能够保证最大的数字在最右侧,第二轮循环能保证第二大的数字在右侧的倒数第二位,依次类推。

循环轮次=数组的长度-1;

因为每轮都能将大的数字移动到右侧,后续的轮次就不必再对该数字进行换位了,每一轮的次数是在不断递减的,可以得出循环次数=数组长度-当前轮次

因为在编写代码是,由于当前轮次作为循环变量,且一般使用0作为初始值,即第一轮的但其概念轮次为0,所以,需要将公式调整为循环次数=数组长度-当前轮次-1

需要进行多轮循环,可以使用嵌套的循环来实现

初始条件:int i=0;

循环条件:i<array.length(数组长度)-1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值