提交 174c6290 编写于 作者: D Dave Gamble

Since we anticipate repeated comparisons, add in a test for sorted lists, which can reduce

cost for sorted objects to O(N)


git-svn-id: svn://svn.code.sf.net/p/cjson/code@72 e3330c51-1366-4df0-8b21-3ccf24e3d50e
上级 491cf029
...@@ -305,6 +305,9 @@ static cJSON *cJSONUtils_SortList(cJSON *list) ...@@ -305,6 +305,9 @@ static cJSON *cJSONUtils_SortList(cJSON *list)
if (!list || !list->next) return list; /* One entry is sorted already. */ if (!list || !list->next) return list; /* One entry is sorted already. */
while (ptr && ptr->next && cJSONUtils_strcasecmp(ptr->string,ptr->next->string)<0) ptr=ptr->next; /* Test for list sorted. */
if (!ptr || !ptr->next) return list; /* Leave sorted lists unmodified. */
while (ptr) {second=second->next;ptr=ptr->next;if (ptr) ptr=ptr->next;} /* Walk two pointers to find the middle. */ while (ptr) {second=second->next;ptr=ptr->next;if (ptr) ptr=ptr->next;} /* Walk two pointers to find the middle. */
if (second && second->prev) second->prev->next=0; /* Split the lists */ if (second && second->prev) second->prev->next=0; /* Split the lists */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册