배열이 발견되었음에도 불구하고 "찾을 수 없음"이라고 보고함: 혼란스러운 검색 딜레마
P粉546179835
P粉546179835 2023-12-26 18:39:31
0
1
481

이것은 다양한 언어로 초보 프로그래머들이 묻는 많은 질문에서 볼 수 있는 논리 오류가 있는 일반적인 질문과 답변입니다.

문제는 특정 입력 기준과 일치하는 요소를 배열에서 검색하는 것입니다. 알고리즘의 의사코드는 다음과 같습니다:

으아아아

이 코드는 일치하는 요소를 성공적으로 찾은 경우에도 "찾을 수 없음"을 보고합니다.

P粉546179835
P粉546179835

모든 응답(1)
P粉080643975

문제는 배열을 통해 무언가를 선형적으로 검색할 때 배열의 끝에 도달할 때까지 그것이 발견되지 않았다는 것을 알 수 없다는 것입니다. 질문의 코드는 일치하는 다른 요소가 있을 수 있음에도 불구하고 일치하지 않는 각 요소에 대해 "찾을 수 없음"을 보고합니다.

간단한 수정은 변수를 사용하여 무언가를 찾았는지 추적한 다음 루프 끝에서 해당 변수를 확인하는 것입니다.

으아아아

Python의 for 循环中有一个 else: 块。仅当循环运行完成时才执行代码,而不是由于使用 break 而结束。这使您可以避免 found 변수(나중에 처리하는 데 여전히 유용할 수 있음):

으아아아

일부 언어에는 루프를 직접 작성하는 대신 사용할 수 있는 메커니즘이 내장되어 있습니다.

  • 일부 언어에는 콜백 함수를 받아들이고 배열의 모든 요소에 대해 함수가 성공했는지 여부를 나타내는 부울 값을 반환하는 anysome 함수가 있습니다.
  • 언어에 배열 필터링이 있는 경우 조건을 확인한 후 결과가 빈 배열인지 확인하는 함수를 사용하여 입력 배열을 필터링할 수 있습니다.
  • 요소를 정확히 일치시키려는 경우 대부분의 언어에서는 일치하는 요소를 검색하는 findindex 기능을 제공합니다.

자주 검색할 예정이라면 배열을 보다 효율적으로 검색할 수 있는 데이터 구조로 변환하는 것이 가장 좋습니다. 대부분의 언어는 集合和/或哈希表데이터 구조를 제공합니다(후자는 연관 배열, 맵, 사전 등 언어에 따라 다양한 이름으로 지정됨). 일반적으로 검색하는 데 O(1) 시간이 걸리고 배열을 스캔하는 데 O(n) 시간이 걸립니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!