이것은 다양한 언어로 초보 프로그래머들이 묻는 많은 질문에서 볼 수 있는 논리 오류가 있는 일반적인 질문과 답변입니다.
문제는 특정 입력 기준과 일치하는 요소를 배열에서 검색하는 것입니다. 알고리즘의 의사코드는 다음과 같습니다:
으아아아이 코드는 일치하는 요소를 성공적으로 찾은 경우에도 "찾을 수 없음"을 보고합니다.
P粉0806439752023-12-27 15:57:11
문제는 배열을 통해 무언가를 선형적으로 검색할 때 배열의 끝에 도달할 때까지 그것이 발견되지 않았다는 것을 알 수 없다는 것입니다. 질문의 코드는 일치하는 다른 요소가 있을 수 있음에도 불구하고 일치하지 않는 각 요소에 대해 "찾을 수 없음"을 보고합니다.
간단한 수정은 변수를 사용하여 무언가를 찾았는지 추적한 다음 루프 끝에서 해당 변수를 확인하는 것입니다.
으아아아Python의 for
循环中有一个 else:
块。仅当循环运行完成时才执行代码,而不是由于使用 break
而结束。这使您可以避免 found
변수(나중에 처리하는 데 여전히 유용할 수 있음):
일부 언어에는 루프를 직접 작성하는 대신 사용할 수 있는 메커니즘이 내장되어 있습니다.
any
或 some
함수가 있습니다. find
或 index
기능을 제공합니다. 자주 검색할 예정이라면 배열을 보다 효율적으로 검색할 수 있는 데이터 구조로 변환하는 것이 가장 좋습니다. 대부분의 언어는 集合
和/或哈希表
데이터 구조를 제공합니다(후자는 연관 배열, 맵, 사전 등 언어에 따라 다양한 이름으로 지정됨). 일반적으로 검색하는 데 O(1) 시간이 걸리고 배열을 스캔하는 데 O(n) 시간이 걸립니다.