¡¡¡¡´úÂë4.·ÖÁѽڵã
¡¡¡¡Í¨¹ý¸ÅÄîºÍ´úÂë²»ÄÑ¿´³ö£¬½ÚµãµÄ·ÖÁÑÏà¶Ô±È½ÏÏûºÄIO£¬ÕâÒ²ÊÇΪʲôSQL ServerÖÐÐèҪһЩ×î¼ÑʵÏÖ±ÈÈç²»ÓÃGUID×ö¾Û¼¯Ë÷Òý£¬»òÊÇÉèÖÃÌî³äÒò×ÓµÈÀ´¼õÉÙÒ³·ÖÁÑ¡£
¡¡¡¡¶øÈç¹ûÐèÒª²åÈëÔªËصĽڵ㲻Âú£¬Ôò²»ÐèÒªÒ³·ÖÁÑ£¬ÔòÐèÒª´Ó¸ù¿ªÊ¼²éÕÒ£¬ÕÒµ½ÐèÒª±»²åÈëµÄ½Úµã£¬Èç´úÂë5Ëùʾ¡£
-
- public void BTreeInsertNotFull(TreeNode<T> Node, T KeyWord)
- {
- int i=Node.elementNum;
-
- if (Node.IsLeaf)
- {
-
- while (i >= 1 && KeyWord.CompareTo(Node.Elements[i - 1]) < 0)
- {
- Node.Elements[i] = Node.Elements[i - 1];
- i -= 1;
- }
- Node.Elements[i - 1] = KeyWord;
- Node.elementNum += 1;
-
- }
-
- else
- {
- while (i >= 1 && KeyWord.CompareTo(Node.Elements[i - 1]) < 0)
- {
- i -= 1;
- }
-
- if (Node.Pointer[i].elementNum == NumPerNode)
- {
-
- BTreeSplitNode(Node, i, Node.Pointer[i]);
-
- }
- if (KeyWord.CompareTo(Node.Elements[i - 1]) > 0)
- {
-
- i += 1;
- }
-
- BTreeInsertNotFull(Node.Pointer[i], KeyWord);
-
-
- }
- }
|
¡¡¡¡´úÂë5.²åÈë
¡¡¡¡Í¨¹ý´úÂë5¿ÉÒÔ¿´³ö£¬ÎÒÃÇûÓнøÐÐÈκεü´ú¡£¶øÊÇ´Ó¸ù½Úµã¿ªÊ¼Óöµ½ÂúµÄ½ÚµãÖ±½Ó½øÐзÖÁÑ¡£´Ó¶ø¼õÉÙÁËÐÔÄÜËðʧ¡£
¡¡¡¡ÔÙ½«¸ù½Úµã·ÖÁѵÄÌØÊâÇé¿ö¿¼ÂǽøÈ¥£¬ÎÒÃÇ´Ó¶ø½«²åÈë²Ù×÷ºÏΪһ¸öº¯Êý£¬Èç´úÂë6Ëùʾ¡£
- public void BtreeInsert(T KeyWord)
- {
- if (RootNode.elementNum == NumPerNode)
- {
-
-
- TreeNode<T> newRoot = new TreeNode<T>();
- newRoot.elementNum = 0;
- newRoot.IsLeaf = false;
-
- BTreeSplitNode(newRoot, 1, RootNode);
-
- BTreeInsertNotFull(newRoot, KeyWord);
-
- RootNode = newRoot;
- }
- else
- {
-
- BTreeInsertNotFull(RootNode, KeyWord);
- }
- }
|