对于n个元素的序列,建立初始堆的时间不超过4n,怎么算的
答案:2 悬赏:20 手机版
解决时间 2021-03-24 01:09
- 提问者网友:謫仙
- 2021-03-23 16:17
对于n个元素的序列,建立初始堆的时间不超过4n,怎么算的
最佳答案
- 五星知识达人网友:舍身薄凉客
- 2021-03-23 17:29
不知道你的问题还有没有别的前提条件这个应该说的是最坏的吧,而且插入点在现有n个的中间,这个时候才是最多n-1次如果是n个有序关键字,采用顺序查找,不限定任何条件,则寻找插入点最少比较1次,最多比较n次当然如果有序的序列是顺序存放,寻找这个插入点可以折半查找,比较次数最好最坏的平均值都变为log2n了
全部回答
- 1楼网友:躲不过心动
- 2021-03-23 17:48
很详细了
public class Test {
public static void main(String[] args) {
// 定义最大数几个
int num = 0;
int[] b = new int[] { 2, 2, 2, 4, 4, 3, 2, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 8, 8, 8, 8, 8, 4, 8, 8 };
// 遍历数组
for (int i = 0; i < b.length - 1;) {
// 定义一个平台的个数计数器
int count = 1;
// 将i后边的每一个元素都和i元素比较
for (int j = i + 1; j < b.length; j++) {
// 如果j元素循环到最后一个元素,则设置i值停止外层循环
if (j == b.length - 1) {
i = j;
}
// 如果相等,则说明是平台,计数器+1
if (b[i] == b[j]) {
count++;
}
// 如果不是平台,则j是新元素,将j赋给i,并停止本次循环。
else {
i = j;
break;
}
}
// 比较每次相同给树比较,大则复制给num
if (num < count)
num = count;
}
System.out.println(num);
}
}
public class Test {
public static void main(String[] args) {
// 定义最大数几个
int num = 0;
int[] b = new int[] { 2, 2, 2, 4, 4, 3, 2, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 8, 8, 8, 8, 8, 4, 8, 8 };
// 遍历数组
for (int i = 0; i < b.length - 1;) {
// 定义一个平台的个数计数器
int count = 1;
// 将i后边的每一个元素都和i元素比较
for (int j = i + 1; j < b.length; j++) {
// 如果j元素循环到最后一个元素,则设置i值停止外层循环
if (j == b.length - 1) {
i = j;
}
// 如果相等,则说明是平台,计数器+1
if (b[i] == b[j]) {
count++;
}
// 如果不是平台,则j是新元素,将j赋给i,并停止本次循环。
else {
i = j;
break;
}
}
// 比较每次相同给树比较,大则复制给num
if (num < count)
num = count;
}
System.out.println(num);
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯