冒泡排序和选择排序的用法和思想

冒泡排序

冒泡排序核心是相邻俩个元素俩俩进行比较。

for(int i=0;i<a.length-1;i++) {
			for(int j=0;j<a.length-i-1;j++) {
				if(a[j]>a[j+1]) {
					a[j]=a[j+1]+a[j];
					a[j+1]=a[j]-a[j+1];
					a[j]=a[j]-a[j+1];
				}
			}
		}

外层循环数组长度a.length-1的意思是,例;数组中有6个数,只需要比较五次即可。

冒泡排序第一轮循环时,就比出了一个最大值,所以第二轮循环就没必要再和最后那个最大的数在比。

所以第二轮循环时,内层循环就需要减1,依次再减,所以内层循环比较次数就是数组长度-i-1;

if中的代码块是用来数做交换用的。举例:a=5;b=6;
a=a+b; 现在a的值就是11,然后再b=a-b;相当于b=11-6=5;现在b的值就是5,然后在a=a-b; a=11-5=6;这样就可以不借用第三方,就可以完成数的交换。

选择排序

选择排序的意思就是说,拿数组的第一个数,依次和数组中后面的每个数做比较,当做升序的时候,第一个数和后面数比较,只要大于后面的那个数,就和那个数的值进行交换,这样做完外层第一轮循环时,数组的第一个数必是最小的。`

for(int i=0;i<a.length-1;i++) {
			for(int j=i+1;j<a.length;j++) {
				if(a[i]>a[j]) {
					a[i]=a[j]+a[i];
					a[j]=a[i]-a[j];
					a[i]=a[i]-a[j];				
				}
			}
		}

外层循环数组的每一个数,内层循环是和每个没有被比较的数做比较,所以内层循环的变量j,要在外层循环循环一次的时候,j的值加一,所以将j的值初始化成j=i+1;i+1的意思是,第一次循环时数组的第0个元素不用再和自己比较一次。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值