Merging of sorted lists using array pair

US9418089B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9418089-B2
Application numberUS-201313892799-A
CountryUS
Kind codeB2
Filing dateMay 13, 2013
Priority dateMay 13, 2013
Publication dateAug 16, 2016
Grant dateAug 16, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

The formulation of a merged sorted list from multiple input sorted lists in multiple phases using an array pair. Initially, the first array is contiguously populated with the input sorted lists. In the first phase, the first and second input sorted lists are merged into a first intermediary merged list within the second array. Each subsequent phase merges a prior intermediary merged list resulting from the prior phase and, a next input sorted list in the first array to generate a next intermediary merged list, or a merged sorted list if there or no further input in the first array. The intermediary merged lists alternate between the first array and the second array from one phase to the next phase.

First claim

Opening claim text (preview).

What is claimed is: 1. A computer program product comprising one or more computer-readable storage media having thereon computer-executable instructions that are structured such that, when executed by one or more processors of the computing system, cause the computing system to perform a method comprising an act of merging a plurality of sorted lists to form a merged sorted list, the act merging the plurality of sorted lists comprising: an act representing a first sorted list and a second sorted list contiguously in a first plurality of elements in a first array in memory an act of establishing a first input cursor at the first element in the first sorted list in the first array; an act of establishing a second input cursor at the first element in the second sorted list in the first array; an act of formulating a second array in memory, the second array including at least a portion that includes a second plurality of elements equal in number to the first plurality of elements; an act of sequentially assigning values to the elements of the second plurality of elements to thereby formulated a first merged sorted list of the first and second sorted lists, the act of sequentially assigning comprising performing the following for each of the first element through a subsequent element in the secondary plurality of elements: an act of comparing a value at an element pointed to by the first input cursor with a value at the element pointed to by the second input cursor; if the value at the element pointed to by the first input cursor satisfies a sorting priority with respect to the value at the element pointed to by the second input cursor; an act of populating the corresponding element of the second plurality of elements with the value at the element pointed to by the first input cursor; and an act of moving the first input cursor to a next element in the first sorted list of the first plurality of elements if there are any further elements in the first sorted list, and if there are not any further elements in the first sorted list, the corresponding element of the second plurality of elements is the subsequent element of the second plurality of elements, and thus the method further includes an act of further populating a remainder of the second plurality of elements with any remaining unprocessed elements of the second sorted list from an element pointed to by the second input cursor; and if the value at the element pointed to by the first input cursor does not satisfy a sorting priority with respect to the value at the element pointed to by the second input cursor; an act of populating the corresponding element of the second plurality of elements with the value at the element pointed to by the second input cursor; and an act of moving the second input cursor to a next element in the second sorted list of the first plurality of elements if there are any further elements in the second sorted list, and if there are not any further elements in the second sorted list, the corresponding element of the second plurality of elements is the subsequent element of the second plurality of elements, and thus the method further includes an act of further populating a remainder of the second plurality of elements with any remaining unprocessed elements of the first sorted list from an element pointed to by the first input cursor. 2. The computer program product in accordance with claim 1 , wherein the first array includes a third sorted list arranged contiguously with the first plurality of elements in the first array to form a first superset plurality of elements in the first array, the method further comprising an act of merging the first merged sorted list with the third sorted list comprising: an act of establishing the first input cursor at the first element in the first merged sorted list in the second plurality of elements in the second array; an act of establishing a second input cursor at the first element in the third sorted list in the first array; an act of sequentially assigning values to the elements of the first superset plurality of elements in the first array to thereby formulate a second merged sorted list of the first, second and third sorted lists, the act of sequentially assigning values to the elements of the first superset plurality of elements comprising performing the following for each of the first element through a subsequent element in the first superset plurality of elements: an act of comparing a value at an element pointed to by the first input cursor with a value at the element pointed to by the second input cursor; if the value at the element pointed to by the first input cursor satisfies the sorting priority with respect to the value at the element pointed to by the second input cursor; an act of populating the corresponding element of the first superset plurality of elements with the value at the element pointed to by the first input cursor; and an act of moving the first input cursor to a next element in the first merged sorted list of the first plurality of elements if there are any further elements in the first merged sorted list, and if there are not any further elements in the first merged sorted list, the corresponding element of the first superset plurality of elements is the subsequent element of the first superset plurality of elements, and thus the method further includes an act of further populating a remainder of the first superset plurality of elements with any remaining unprocessed elements of the third sorted list from an element pointed to by the second input cursor; and if the value at the element pointed to by the first input cursor does not satisfy the sorting priority with respect to the value at the element pointed to by the second input cursor; an act of populating the corresponding element of the first superset plurality of elements with the value at the element pointed to by the second input cursor; and an act of moving the second input cursor to a next element in the third sorted list of the first array if there are any further elements in the third sorted list, and if there are not any further elements in the third sorted list, the corresponding element of the first superset plurality of elements is the subsequent element of the first superset plurality of elements, and thus the method further includes an act of further populating a remainder of the first superset plurality of elements with any remaining unprocessed elements of the first merged sorted list from an element pointed to by the first input cursor. 3. The computer program product in accordance with claim 1 , wherein the plurality of sorted lists is a first plurality of sorted lists, and the merged sorted list is a first merged sorted list, the method further comprising: an act of persisting in sort order those higher prioritized values of the merged sorted list that have a more prioritized sort priority; an act of removing the persisted values from the first plurality of sorted lists; an act of accessing at least one additional element; an act of formulating a second plurality of sorted lists using a combination of the at least one additional element and any remaining sorted lists of the first plurality of the sorted lists that remain after the act of removing; and an act of formulating a second merged sorted list using the second plurality of sorted lists. 4. The computer program product in accordance with claim 1 , wherein the act of merging the plurality of sorted lists to form the merged sorted list is performed in response to an act of detecting a notification that additional sorted lists in a stream of sorted lists that are beyond the plurality of sorted lists only include values that have lower prioritized sort priority than any of the values in the plurality of sorted lists. 5. The computer program p

Assignees

Inventors

Classifications

  • External sorting · CPC title

  • Query processing · CPC title

  • Vectors, bitmaps or matrices · CPC title

  • Indexing; Data structures therefor; Storage structures · CPC title

  • Database tuning (G06F16/2282 takes precedence; database performance monitoring G06F11/3409) · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9418089B2 cover?
The formulation of a merged sorted list from multiple input sorted lists in multiple phases using an array pair. Initially, the first array is contiguously populated with the input sorted lists. In the first phase, the first and second input sorted lists are merged into a first intermediary merged list within the second array. Each subsequent phase merges a prior intermediary merged list result…
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F16/2237. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Aug 16 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).