2011-03-31 2 views
0

나는 학생 목록을 페이지에 표시하고 학생 정보를 ID와 이름이있는 객체로 저장합니다.검색 알고리즘의 성능을 향상시킬 수 있습니까?

목록에 스크롤 막대가있는 경우 학생을 검색하는 검색 상자를 추가하고 싶습니다.

검색 문자열에 따라 학생 목록을 업데이트하십시오.

지금은 학생 개체 배열을 반복하고 이름에 검색 문자열의 인덱스를 확인하고 있습니다.

성능을 향상시키는 더 좋은 알고리즘이 있습니까?

// 내 코드 :

검색 = 기능 (데이터, queryString이) { var에 입술 = 새로운 배열(); for (데이터 내역) { if (stu.name.search (queryString)! = -1) { res.push (stu); } } return res; }

+0

현재 코드를 알려주십시오. 이 목록에 문자 그대로 수천 명의 학생이 없다면 이것은 매우 빠를 것입니다. –

답변

0

빈 노드가 압축 된 trie-datastructure 또는 radix-trie 또는 crit-bit trie를 찾고 싶습니다. 당신은 kart-trie를 특별한 형태의 radix-trie로 보이기를 원할 것입니다. 일반적으로 트라이는 텍스트 검색 알고리즘 (예 : 사전)에 적합합니다. 나는 phpclasses.org (kart-trie)에서 php로 kart-trie를 구현했다. 다운로드하여 함께 사용해도 좋습니다.

1

정렬 된 인덱스를 만들고 이진 검색을 사용할 수 있습니다. 여러 기준으로 검색해야하는 경우 여러 개의 색인 (예 : 이름 또는 ID. 트리보다 구현이 간단합니다.

+0

일부 학생은 정렬 된 색인을 만든 후 추가 할 수 있습니다 – kkchaitu

+0

물론 신입생이 삽입되면 색인을 업데이트해야합니다. 그렇지 않으면 좋지 않습니다. – mbatchkarov

관련 문제