2013-09-05 2 views
0

선형 검색과 순차 검색은 동일합니다. 내 지식이 정확하다면 순차 검색 알고리즘과 같이 선형 검색을 위해 아래의 알고리즘 작동을 친절하게 안내합니다.내 선형 검색 혼란에 혼동

  1. searcharray, searchno, length를 초기화하십시오.
  2. 초기화 pos = 0.
  3. 4 단계를 pos< = 길이까지 반복하십시오.
  4. 경우 searcharray [POS = searchno
    복귀 POS I는 I 배열

    의 첫 번째 요소에서 발견 값을 이동하는 방법에 도움이 필요 둘째 1.

의해 다른
증가 POS

+0

예, 선형 검색 및 순차 검색은 동일한 것을 의미하며 '까지'라는 단어를 '까지'(아마도 약간의 언어 문제입니까?)로 변경하면 알고리즘이 올바른 것입니다. –

+0

"발견 된 값을 [배열의 첫 번째 요소로 이동하십시오"]는 무엇을 의미합니까? 거의 모든 언어에서, 그것은'searcharray [0] = searcharray [pos];와 같이 쓰여질 것입니다. 대신에 첫 번째 요소의 값을 발견 된 요소와 바꾸기를 원하십니까? 그렇다면 세 번째 변수는 한 요소의 내용을 일시적으로 보유해야합니다. –

+0

@j_random_hacker 귀하의 추측은 100 % 정확합니다 내 배열에 5,6,7,2,3,4,9가 포함되어 있다고 가정하고 2를 검색하면 배열은 다음과 같이 나타납니다. 2,5,6,7,3,4,9 – user2747954

답변

0

배열에서 숫자를 선형 검색하면 성공 또는 실패 할 수 있습니다.

알고리즘에서 성공 또는 실패한 리턴을 정의해야합니다. 성공을위한 위치 인덱스 및 실패한 음수와 같은.

다음과 같이 생각하십시오. 위치를 찾을 때까지 이동하십시오.

귀하의 번호는 타겟으로 정의됩니다. 주어진 길이와 배열 A.

int linearSearch(int target, int* A, int length) { 
    int pos = length - 1; 
    while (pos >= 0 and target != A[pos]) --pos; 
    return pos; 
} 

여기에서 대상 번호가 배열로되어 있지 않으면 -1이 반환됩니다.

이것은 간단하고 우아합니다. 그러나 중복되는 대상 번호가있는 경우 처리 방법을 생각할 수 있습니다. 찾은 사람 중 하나를 반환하거나 모든 위치를 반환합니다.