IP Library › Granted Patent US 12,135,953
Granted Patent B2
US 12,135,953 · App. 17/274,753 · Granted Nov 5, 2024

Systems, methods, and devices for the sorting of digital lists

Inventor: Kyle Marcroft (Redmond, WA)
G06F7/24G06F16/9024
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,135,953
App. No.
17/274,753
Granted
Nov 5, 2024
Kind
B2
Abstract

Systems, methods, and devices for the sorting of digital lists based on the binary components of their elements.

Claims (60)

1. A computer implemented method for sorting an array comprised of a plurality of elements, the method comprising the steps of:

receiving a sort request from a requesting user that includes one or more sorting criteria for the array comprised of a plurality of elements, wherein the elements are stored in memory that is accessible by a computer processor and wherein the elements are comprised of one or more bits that may be active or inactive;

instructing the processor to run a sorting algorithm to sort the elements from a first order to a second order wherein the second order is a sorted array, wherein the elements are sorted dependent on the sorting criteria and the sorting of the elements is performed by examining binary encoding of the elements;

running the sorting algorithm to sort the array of elements in a memory, wherein the sorting algorithm comprises the steps of:

creating a plurality of swap-indices equal to the square of the number of bits to be counted with each swap-index being associated with one configuration of bits;

moving the plurality of swap indices sequentially through each element, and stopping each swap-index at any element with a configuration of bits that is different from that of the swap-index:

move the element on which a swap-index stopped to the position in the array occupied by its current proper swap-index, the swap-index with a matching bit configuration;

setting a pointer to a value equal to the value of a highest bit encoded for each element;

moving the pointer in sequence through the array and examining a bit in each element of an order equal to the current value of the pointer until encountering an element where the current bit is active;

creating a new sub-array, if one has not already been created for the current pointer value;

moving each element encountered by the pointer with the active hit of an order equal to the value of the pointer to a beginning of the new sub-array;

continuing through the array elements and moving each element encountered where the first bit is active to the end of the new sub-array.

2. The computer implemented method of claim 1 , wherein the method for sorting an array of elements further comprises the step of:

repeating the preceding steps in the array, on all previously created new sub-arrays, and on all created new sub-arrays for a given cycle for elements where a Slower order bit is active.

3. The computer implemented method of claim 2 , wherein the method for sorting an array of elements further comprises the step of:

repeating the preceding steps for any subsequent lower order bits until all bits have been examined.

4. The computer implemented method of claim 2 , wherein the repeating the preceding steps in the array step further comprises:

ceasing repetition of the algorithm if all sub-lists are comprised of a single element or solely of duplicate elements.

5. The computer implemented method of claim 1 , wherein the method for sorting an array of elements further comprises the step of:

combining all created new sub-arrays into a single array based on the new sub-arrays' order of creation.

6. The computer implemented method of claim 1 , wherein the sorting algorithm further comprises the steps, that occur before the other steps in the sorting algorithm, of:

moving through the array and examining at least one bit of each element in the array and increasing the value of the element in a counting new sub-array corresponding to a configuration of the first bit and the second bit each time the configuration is encountered.

7. The computer implemented method of claim 6 , wherein the sorting algorithm further comprises the steps, that occur before the other steps in the sorting algorithm, of:

creating a plurality of bucket sub-lists equal to the number of configurations possible for the bits being counted and associate one sub-list with each bit configuration;

moving each element to the beginning of the sub-list associated with the bit configuration that matches the element's bit configuration.

8. The computer implemented method of claim 1 , wherein the method for sorting, an array of elements further comprises the step of:

reducing the pointer value by one and repeating the algorithm starting at the move step until the pointer value is lower than a lowest bit encoding each element.

9. The computer implemented method of claim 1 , wherein the running the sorting algorithm step further comprises:

Creating a new instance of the sorting algorithm that repeats the sorting algorithm steps on each new sub-array.

10. The computer implemented method of claim 1 , wherein the elements are all binary encoded positive integers encoded by one or more bits.

11. The computer implemented method of claim 1 , wherein the sorting algorithm further comprises the step, that occurs before the other steps in the sorting algorithm, of:

performing the swap-index steps on each bucket sub-list simultaneously.

12. A non-transitory computer-readable storage medium having stored therein a computer program comprising code which when executed on a computer will:

access a source array of elements, wherein each of the elements is encoded by one or more bits stored in memory;

examine the one or more bits of each element in sequence, starting with a highest order bit;

upon encountering an element with an active bit in the order currently being examined create a sub-list for that order of bits if one has not previously been created for the order being examined and the array or sub-list being examined, and move the element with a bit encoded as active to a sub-list for that order of bits;

repeat the examine, create, and move steps for the source array and each of the sub-lists until the lowest order bit in each of the elements has been examined and the element has been moved;

combine the created sub-lists into a new array in the reverse order in which they were created;

create a plurality of swap-indices equal to the square of the number of bits to be counted with each swap-index being associated with one configuration of bits;

move the plurality of swap-indices sequentially through each element, and stopping each swap-index at any element with a configuration of bits that is different from that of the swap-index:

move the element on which a swap-index stopped to the position in the array occupied by its current proper swap-index, the swap-index with a matching bit configuration.

13. The non-transitory computer-readable storage medium of claim 12 , wherein the source array is stored in a database.

14. The non-transitory computer-readable storage medium of claim 12 , wherein the computer is further comprised of one or more sorting specific logic gates configured to facilitate the examination step.

15. A computer system for sorting a source array that includes a plurality of binary encoded elements, the computer system comprising:

a sorting algorithm module that is stored in memory of the computer system, the sorting algorithm module being operable to convert an unsorted array of elements into a sorted array of elements;

a plurality of complex objects stored in memory of the computer system;

the unsorted array of elements stored in memory of the computer system, wherein the each of the elements includes a reference to one of the plurality of complex objects;

a processor that is operative to execute the sorting algorithm module; and

memory that is operable to store the sorted array of elements;

wherein the sorting algorithm module comprising a sorting algorithm, the sorting algorithm comprising the steps of:

creating a pointer and setting its value equal to the maximum number of bits encoding any of the elements in the array;

moving the pointer through the array examining a highest order bit for each element;

creating a new sub-list for each order of bit being examined the first time an element with an active bit of an order equal to the value of the pointer is encountered;

and moving any element with a highest order bit set to active to the new sub-list corresponding to that order of bit; and

reducing the value of the pointer by one and repeating the above process beginning at the moving the pointer step on all newly created and previously created sub-lists, until the pointer value is zero;

create a plurality of swap-indices equal to the square of the number of bits to be counted with each swap-index being associated with one configuration of bits;

move the plurality of swap-indices sequentially through each element, and stopping each swap-index at any element with a configuration of bits that is different from that of the swap-index;

move the element on which a swap-index stopped to the position in the array occupied by its current proper swap-index, the swap-index with a matching bit configuration;

wherein the sorting is performed by iteratively accessing the binary encoding of the elements in the memory.

16. A computer system for sorting a source array of claim 15 , wherein the computer system is further comprised of one or more sorting specific logic gates configured to facilitate the moving the pointer step.

Continuity (4)
Provisional Application 62835326 · Apr 17, 2019
Provisional Application 62817022 · Mar 12, 2019
Provisional Application 62807557 · Feb 19, 2019
Related Publication 20220050664A1 · Feb 17, 2022