Vig*_*lla 0 java arrays for-loop
该方法即将删除最小人口的城市!
方法:
public void delCity(long population) {
if (population== 0) {
System.out.println("There is no city!");
return;
}
for (int i = 0; i < index; i++) {
if (cities[i].getPopulation() < population) {
for (int j = i; j < index - 1; j++) {
cities[j] = cities[j + 1];
}
cities[--index] = null;
i--;
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以我不理解的部分是第二个for循环的主体,例如如何cities[j] = cities[j + 1];工作以及它是cities[--index] = null; i--;什么?我非常感谢你的回复.
这个循环正在移动数组的所有值[从位置i,即要删除的城市].(因为数组是静态的,否则元素之间就是null)
for (int j = i; j < index - 1; j++) {
cities[j] = cities[j + 1];
}
Run Code Online (Sandbox Code Playgroud)
然后将最后一个元素设置为null并减少索引;
cities[--index] = null;
Run Code Online (Sandbox Code Playgroud)
正如提到的评论.你的复杂性是O(N²).但只是更改数据结构(例如,使用列表),您可以将其改进为O(N).
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |