Binäre Suche nach dem ersten Ereignis von K
Posted: 01 Feb 2025, 06:54
Ich habe Code, der ein sortiertes Array durchsucht und den Index des ersten Auftretens von k.while(left
statt < /p>
while(left
Hier ist der vollständige Code: < /p>
public static int searchFirstOfK(List A, int k) {
int left = 0, right = A.size() - 1, result = -1;
// A.subList(left, right + 1) is the candidate set.
while (left k) {
right = mid - 1;
} else if (A.get(mid) == k) {
result = mid;
// Nothing to the right of mid can be the first occurrence of k.
right = mid - 1;
} else { // A.get(mid) < k
left = mid + 1;
}
}
return result;
}
< /code>
Woher weiß ich, wann ich linke Verwendung geringer oder gleich rechts ist oder einfach links verwenden kann, ist weniger als rechts.
statt < /p>
while(left
Hier ist der vollständige Code: < /p>
public static int searchFirstOfK(List A, int k) {
int left = 0, right = A.size() - 1, result = -1;
// A.subList(left, right + 1) is the candidate set.
while (left k) {
right = mid - 1;
} else if (A.get(mid) == k) {
result = mid;
// Nothing to the right of mid can be the first occurrence of k.
right = mid - 1;
} else { // A.get(mid) < k
left = mid + 1;
}
}
return result;
}
< /code>
Woher weiß ich, wann ich linke Verwendung geringer oder gleich rechts ist oder einfach links verwenden kann, ist weniger als rechts.