大佬教程收集整理的这篇文章主要介绍了打印数组的第 k 个最小数字,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
以下代码显示错误输出:
这是我的代码:
int[] x = {7,10,4,20,15};
int n = x.length;
int k = 4;
int ctr = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (x[i] > x[j]) {
ctr++;
}
if ((ctr + 1) == k){
ans = x[i];
break;
}
}
}
System.out.println(ans);
要获得 Unknown column teams.id in where clause
最小的元素,请尝试以下操作:
使用 Kth
对数组进行排序,或者如果您必须自己进行排序,请使用简单的排序算法,例如 bubble sort;
将 Arrays.sort
变量初始化为 1;
遍历数组从count
直到i = i = 0;
,比较当前元素和下一个元素,如果不相等就加一,否则不加;
停止直到计数器 == N - 1
元素
之后,您可以改进代码以处理极端情况,例如数组没有 Kth
元素等。
使用上述输入算法
Kth
;
找到第四小的。
排序数组 'x' -> int[] x = {7,10,4,20,15}
计数 = 1;
遍历数组 4 != 7 Count = 2;
7 != 10 -> 计数 = 3;
10 == 10 -> 计数 = 3;
10 != 15 -> 计数 = 4;
停止,{4,7,15,20}
是第四小的元素
如果你想坚持你的算法试试这个,但我同意其他人的观点,array.sorted 的解决方案更好
int[] x = {7,15};
int n = x.length;
int k = 4;
int ctr = 0;
int ans = 0
for (int i = 0; i < n; i++) {
ctr = 0;
for (int j = 0; j < n; j++){
if (x[i] > x[j]) {
ctr++;
}
}
if ((ctr + 1) == k){
ans = x[i];
break;
}
}
System.out.println(ans);
此方法正在寻找“一个大于数组中其他 k 个数字的数字”,而不是像您所说的“取第 k 个数字”
例如,这种方法在以下情况下会失败:{4,2,2} 并且您被要求选择第 3 个
没有比其他2大的数:4比5大,2比0大 所以在你的提案中 ctr 变量永远不会 = 3 并且算法会失败。
以上是大佬教程为你收集整理的打印数组的第 k 个最小数字全部内容,希望文章能够帮你解决打印数组的第 k 个最小数字所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。