关于数组内排序计算次数的问题

不废话,直接上代码。

1.获取5个数中的最大数:

int[] score = {66,77,88,65,88};
int max = score[0];
for(int i=0;i<score.length-1;i++){
  if(max<score[i+1]){
    max = score[i+1];
  }
}

由此可以看出,计算的总次数为

计算个数   2   3   4    5  ... n

计算次数   1   2   3    4  ... n-1

最小数次数一样。

 

2.将6个数从小到大排列:(冒泡)

int[] a = { 55, 45, 23, 444, 313, 112 };
int c;
int count = 0;
for (int i = 1; i < a.length ; i++) {
  for (int j = 0; j < a.length-i; j++) {
    if (a[j] > a[j + 1]) {
      c = a[j + 1];
      a[j + 1] = a[j];
      a[j] = c;
    }
    count++;
  }
}
for (int i = 0; i < a.length; i++) {
  System.out.println(a[i] + "==" + count+"==="+a.length);
}

输出:

---------------------

23==15===6
45==15===6
55==15===6
112==15===6
313==15===6
444==15===6

---------------------

冒泡分析:

c = a[j + 1];
a[j + 1] = a[j];
a[j] = c;

变量C存在的意义就是存放a[j+1]并且在替换之后放入a[j]。

(随手画图不要见怪)

冒泡的交换次数依次为,(5,4,3,2,1)

 每次完成内部for循环的目的是把最大的数放在最后,并在下次循环的时候去除,所以次数依次减一。

转载于:https://www.cnblogs.com/fastfn/p/8987977.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值