가능한 한 빨리 데이터베이스에서 숫자를 조회 할 수있는 데이터 구조를 구현하려고합니다. 5450 개의 다른 숫자를 가진 데이터베이스가 있다고 가정 해 봅시다. 저의 가장 큰 관심사는 메모리 효율성이 아닌 속도입니다. 다중 웨이 트리에 대해이 기사를 온라인에서 찾았습니다 : http://c0.typesafety.net/courses/15122-f10/lectures/18-tries.pdf. 그래서 각 노드가 배열 크기가 10 인 10 방향 트리를 구현하기로 결정했지만 구조체의 클래스를 만드는 방법에 약간의 어려움이 있습니다. 여기에 대략 나와있는 대략적인 개요가 있습니다.워드 프로세싱 응용 프로그램
class MSTNode{
bool isDigit; //is it one of the digit in the number
int arrayNode[];
MST(bool isWord): isWord(isWord){
arrayNode[] = [0,1,2,3,4,5,6,7,8,9];
}
}
class MST{
MSTNode * root;
//What functions should be included in this class?
//Insert Function?
//Search Function?
}
나는 공을 굴리는 데 약간의 도움이 필요합니다. 누군가 내 디자인에 대한 잠재적 인 문제를 지적 할 수 있다면 매우 감사 할 것입니다. 무엇을 포함해야합니까? 무엇을해서는 안되나요? 기본적으로, 나는 데이터 구조의 설계를 생각해 내는데 도움이 필요하다. 나는 당신에게서 무료 코드를 얻으려고합니다. 처음에는 설계에 도움이 필요하고 나머지는 구현할 수 있습니다. 첫 번째 MSTNode
루트로
class MSTNode{
public:
void Insert(unsigned int n) {
// GetOrCreate MSTNode in the first digit of n
// and recursively call insert with n without this digit
// once no more digit, set the isFinal flag.
}
bool Search(unsigned int n) const {
// Get MSTNode of the first digit of n
// if nullptr, return false.
// and recursively call Search with n without this digit
// once no more digit, return the isFinal flag.
}
private:
std::unique_ptr<MSTNode> arrayNode[10];
bool isFinal = false; //is it one of the digit in the number
};
:
이 질문은 코드 검토에 관한 내용이므로 주제가 아닌 것으로 보입니다. – 0x499602D2
[B-tree] (http://en.wikipedia.org/wiki/B-tree)를 다시 발명하려고하십니까? –
O (log (base 10) N)을 가진 나무를 발명하려고합니다. 문제는 각 노드에 크기 10의 배열이 있어야한다는 것입니다. –