关于数组内排序计算次数的问题
Posted FN飞鸟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于数组内排序计算次数的问题相关的知识,希望对你有一定的参考价值。
不废话,直接上代码。
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循环的目的是把最大的数放在最后,并在下次循环的时候去除,所以次数依次减一。
以上是关于关于数组内排序计算次数的问题的主要内容,如果未能解决你的问题,请参考以下文章