2012-06-18 4 views
0

효율적인 엑셀과 유사한 앱을 구현해야합니다. (- 내가하지 않은 세포에 대한 사전 할당 메모리에 을하지 않으 예를 들어) 효율적인 방식으로효율적인 엑셀 유사 앱을 구현하는 방법

  • 저장 데이터 : 나는 것입니다 데이터 구조를 찾고 있어요. 사용자가 세포

어떤 아이디어 중 하나에 수식을 변경할 때

  • 효율적인 갱신을 허용 하시겠습니까?

    감사합니다, 리튬이 경우

  • 답변

    1

    , 당신은 온라인 dictionary structure 찾고 있습니다. 이것은 데이터의 한 묶음 (이 경우 셀을 나타내는 좌표)을 다른 셀 (이 경우 셀 내용 또는 수식)과 연결할 수있게 해주는 구조의 범주입니다. "online"형용사는 실시간으로 사전 항목을 추가, 제거 또는 변경할 수 있음을 의미합니다.

    많은 구조가 있습니다. 해시 테이블, 바이너리 트리, 건너 뛰기 목록, 링크 된 목록, 배열의 목록 등 몇 가지 일반적인 이름을 지정합니다.

    물론 이들 중 일부는 구현 및 항목 수에 따라 다른 것보다 효율적입니다. 일반적으로 나는 이런 문제에 해쉬 테이블을 사용한다.

    그러나 범위 쿼리에서 "이 범위의 셀을 모두 수정"해야하는 경우 이진 트리 또는보다 복잡한 공간 구조를 사용하는 것이 더 나을 수 있습니다. 문제.

    +0

    감사합니다. 이것은 나의 초기 아이디어 였지만, "온라인"사전을 생각하지 않았기 때문에 세부 사항에 대해 생각하는 것을 혼란스럽게 만들었습니다. 그렇다면 각 항목에 다른 해시 테이블을 포함하는 해시 테이블을 사용해야한다고 생각합니까? 예를 들어 사용자가 셀 번호 : i-3을 채우는 경우 첫 번째 해시에 키 "i"가있는 항목을 추가 한 다음이 항목의 값을 " 3 "키? – user429400

    +0

    데이터의 첫 번째 한자는 전체 2D 셀 참조 - I3입니다. 두 개의 별도 사전이나 사전의 계층 구조가 필요하지 않습니다. 각 셀에 고유 한 식별자가 있으면 (예 : I3이 고유 식별자 임) 좋은 것입니다. 예를 들어 행과 열이 16 비트 정수가되도록 행과 열로 저장한다고 가정 해보십시오. 그런 다음 하나의 32 비트 정수를 만들기 위해 이들을 함께 슬램하십시오. 해당 정수는 해당 셀의 조회 값이됩니다. – Kaganar

    관련 문제