Вы находитесь на странице: 1из 92

Review of Elementary Data

Structures (Part 2)
Manoj Kumar
DTU, Delhi
Linked List: Problem
• Find the address/data of first common node .
• Use only constant amount of additional space.
• Your algorithm should run in O(m+n)

P1 4 6 8 … 33 65 45 77 61 Null

P2 3 5 7 … 23 44
Hashing
Hashing : Introduction
Suppose that we want to store 10,000 students
records (each with a 5-digit ID) in a given container.
Search operation on:
A linked list implementation would take O(n)time.
A height balanced tree would give O(log n)access
time.
Using an array of size 100,000 would give O(N) time,
but will lead to a lot of space wastage.
Is there some way that we could get O(1) search
time without wasting a lot of space?
The answer is hashing.
Data stored using hashing is called hashtable.
Hashing
a data structure in which finds/searches are very fast
As close to O(1) as possible
minimum number of executed instructions per method
Insertion and Deletion should be fast too
Objects stored in hash table have unique keys
A key may be a single property/attribute value
Or may be created from multiple properties/values
Hash tables vs. Other Data Structures
• We want to implement the operations Insert(), Delete() and
Search()/Find() efficiently.
• Arrays:
▫ can accomplish in O(1) time
▫ but are not space efficient (assumes we leave empty space for keys not
currently in dictionary)
• Binary search trees
▫ can accomplish in O(log n) time
▫ are space efficient.
• Hash Tables:
▫ A generalization of an array that under some reasonable assumptions is
O(1) for Insert/Delete/Search of a key
Hash Table
• Very useful data structure
▫ Good for storing and retrieving key-value pairs
▫ Not good for iterating through a list of items
• Example applications:
▫ Storing objects according to ID numbers
When the ID numbers are widely spread out
When you don’t need to access items in ID order
Hash Tables – Conceptual View

buckets
table obj1
8 key=15
hash value/index

7
6 Obj3
Obj2
key=4
5 key=31
4
Obj4
3 key=2
2
Obj5
1
key=1
0
Hash Table
Hash Tables solve these problems by using a much smaller
array and mapping keys with a hash function.
Let universe of keys U and an array of size m. A hash function
h is a function from U to 0…m, that is:
h:U 0…m
0
U 1
k1 k2 2 h (k2)=2
3 h (k1)=h (k3)=3
k3 k4 4
5 h (k6)=5
k6 6
7 h (k4)=7
(universe of keys)
Hash index/value
A hash value or hash index is used to index the hash
table (array)
A hash function takes a key and returns a hash
value/index
The hash index is a integer (to index an array)
The key is specific value associated with a specific
object being stored in the hash table
It is important that the key remain constant for the lifetime
of the object
Hash Function
You want a hash function/algorithm that is:
Fast
Creates a good distribution of hash values so that the items
(based on their keys) are distributed evenly through the
array
Hash functions can use as input
Integer key values
String key values
Multipart key values
Multipart fields, and/or
Multiple fields
The mod function
Stands for modulo
When you divide x by y, you get a result and a remainder
Mod is the remainder
8 mod 5 = 3
9 mod 5 = 4
10 mod 5 = 0
15 mod 5 = 0
Thus for key-value mod M, multiples of M give the same
result, 0
But multiples of other numbers do not give the same result
So what happens when M is a prime number where the keys are not
multiples of M?
Hash Tables: Insert Example
For example, if we hash keys 0…1000 into a hash
table with 5 entries and use h(key) = key mod 5 , we
get the following sequence of events:
Insert 2 Insert 21 Insert 34 Insert 54
key data key data key data

0 0 0
There is a
1 1 21 … 1 21 …
collision at
2 2 … 2 2 … 2 2 … array entry #4
3 3 3
4 4 4 34 … ???
What do we do about Collisions?
Find a better hashing algorithm
Collisions occur when two or more records compete for
the same address. Therefore we should try to find a
hashing algorithm that distributes records fairly evenly
among the available addresses
Use a bigger table
The more free slots in the table, the less likely there
will be a collision. But if you are doing lots of accesses,
using a bigger table will reduce the likelihood that two
accesses will reference the same part of the disk
Need a system to deal with collisions
Dealing with Collisions
A problem arises when we have two keys that hash in
the same array entry – this is called a collision.
There are three ways to resolve collision:
Hashing with Buckets: multiple records are stored in a
bucket (block)

Hashing with Chaining (“Separate Chaining”): every


hash table entry contains a pointer to a linked list of keys
that hash in the same entry

Hashing with Open Addressing: every hash table entry


contains only one key. If a new key hashes to a table entry
which is filled, systematically examine other table entries
until you find one empty entry to place the new key
Hashing with buckets
• A common strategy is to have space for more than
one record at each location in the hash table.
• Each location contains a bucket (or block or page) of
records.
• Each bucket contains a fixed number of records,
known as the blocking factor.
• The size of each bucket is set to the size of the block
of data that is read in on each disk read.
• Reading in a whole bucket takes one disk access
Hashing with Chaining
• The problem is that keys 34 and 54 hash in the same entry (4). We solve
this collision by placing all keys that hash in the same hash table entry in a
chain (linked list) or bucket (array) pointed by this entry:

Insert 54 other Insert 101


key key data
0 0
1 21 1 101 21
2 2 2 2
3 3
4 54 34 4 54 34

CHAIN
Hashing with Chaining
• What is the running time to insert/search/delete?
▫ Insert: It takes O(1) time to compute the hash function and insert at
head of linked list
▫ Search: It is proportional to max linked list length
▫ Delete: Same as search

• Therefore, in the unfortunate event that we have a “bad” hash


function all n keys may hash in the same table entry giving an
O(n) run-time!
So how can we create a “good” hash function?
Hash Tables – Open Addressing
table
obj1
7 key=15
6
hash value/index

Obj3
5 key=27
Index=3
4 Obj2
Index=3 key=3
3
2
Obj4
1
key=2
Obj5
0
key=1
Hashing with Open Addressing
So far we have studies hashing with chaining, using a
list to store the items that hash to the same location
Another option is to store all the items (references to
single items) directly in the table.
Open addressing
collisions are resolved by systematically examining other
table indexes, i0 , i1 , i2 , … until an empty slot is located.
Open Addressing
The key is first mapped to an array cell using the
hash function (e.g. key % array-size)
If there is a collision, find an available array cell
There are different algorithms to find (to probe for)
the next array cell
Linear
Quadratic
Double Hashing
Probe Algorithms (Collision Resolution)
Linear Probing
Choose the next available array cell
First try arrayIndex = hash value + 1
Then try arrayIndex = hash value + 2
Be sure to wrap around the end of the array!
arrayIndex = (arrayIndex + 1) % arraySize
Stop when you have tried all possible array indices
If the array is full, you need to throw an exception or, better
yet, resize the array
Probe Algorithms (Collision Resolution)
Quadratic Probing
Variation of linear probing that uses a more complex
function to calculate the next cell to try
First try arrayIndex = hash value + 12
Then try arrayIndex = hash value + 22
Be sure to wrap around the end of the array!
arrayIndex = (arrayIndex + i2) % arraySize
Probe Algorithms (Collision Resolution)
Double Hashing
Apply a second hash function after the first
The second hash function, like the first, is dependent on the
key
Secondary hash function must
Be different than the first
Good algorithm:
arrayIndex = (arrayIndex + stepSize) % arraySize;
Where stepSize = constant – (key % constant)
And constant is a prime less than the array size
Load factor
Understanding the expected load factor will help you
determine the efficiency of you hash table implementation and
hash functions
Load factor = number of items in hash table / array size
For Open Addressing:
If < 0.5, wasting space
If > 0.8, overflows significant
For Chaining:
If < 1.0, wasting space
If > 2.0, then search time to find a specific item may factor in
significantly to the [relative] performance
Hashing functions
Our goal in choosing any hashing algorithm is to
spread out the records as uniformly as possible over
the range of addresses available.
Mod function
Let N be the maximum number of records expected.
Choose a prime number p > N
Hash function: h(key) = key mod p
Other Hash functions
Truncation or Digit/Character Extraction
Work based on the distribution of digits or characters in
the key.

More evenly distributed digit positions are extracted and


used for hashing purposes.

For instance, students IDs or ISBN codes may contain


common subsequences which may increase the likelihood
of collision.

Very fast, but digits/characters distribution in keys may


not be very even.
Other Hash functions
Folding
It involves splitting keys into two or more parts and
then combining the parts to form the hash addresses.
To map the key 25936715 to a range between 0 and
9999, we can:
split the number into two as 2593 and 6715 and
add these two to obtain 9308 as the hash value.
Very useful if we have keys that are very large.
Fast and simple especially with bit patterns.
A great advantage is ability to transform non-integer
keys into integer values.
Other Hash functions
Radix Conversion
Transforms a key into another number base to obtain
the hash value.
Typically use number base other than base 10 and
base 2 to calculate the hash addresses.
To map the key 55354 in the range 0 to 9999 using
base 11 we have:
5535410= 3865211
We may truncate the high-order 3 to yield 8652 as
our hash address within 0 to 9999.
Other Hash functions
Mid-Square
The key is squared and the middle part of the result taken
as the hash value.

To map the key 3121 into a hash table of size 1000, we


square it 31212 = 9740641 and extract 406 as the hash
value.

Works well if the keys do not contain a lot of leading or


trailing zeros.

Non-integer keys have to be preprocessed to obtain


corresponding integer values.
Some Applications of Hash Tables
Database systems: Specifically, those that require efficient random
access. Generally, database systems try to optimize between two types
of access methods: sequential and random. Hash tables are an
important part of efficient random access because they provide a way
to locate data in a constant amount of time.
Symbol tables: The tables used by compilers to maintain information
about symbols from a program. Compilers access information about
symbols frequently. Therefore, it is important that symbol tables be
implemented very efficiently.
Data dictionaries: Data structures that support adding, deleting, and
searching for data. Although the operations of a hash table and a data
dictionary are similar, other data structures may be used to implement
data dictionaries. Using a hash table is particularly efficient.
Network processing algorithms: Hash tables are fundamental
components of several network processing algorithms and
applications, including route lookup, packet classification, and
network monitoring.
Sparse Matrices
0 0 0 0 4 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 11 0 0

0 0 5 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 8

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 7 0 0 0

0 0 0 0 0 0 0 0 0 0

9 0 0 0 0 0 0 0 0 0
Sparse Matrices
a matrix populated primarily with zeros.
If most of the entries of a matrix are 0, then the
matrix is said to be sparse

In such a case, it may be very expensive to store zero


values for two reasons:
The actual storage—if most entries are 0, do we need
to store them?
Matrix operations—the results do not require
computation:
x + 0 = x and x·0 = 0
Dense and sparse matrix
col 0

col 1

col 2

col 3

col 4
Row 0 -25 0 67 4 12
Row 1 1 8 45 61 2 Dense
Row 2 7 98 0 32 -5 matrix
Row 3 11 43 60 col 0 19 31

col 1

col 2

col 3

col 4

col 5

col 6
Row 0 16 0 0 0 12 0 0
Row 1 0 0 11 0 0 3 0
Row 2 0 5 0 0 0 0 6
Row 3 0 0 0 0 0 0 0
Row 4 13 0 0 0 0 0 4
Sparse Matrix
Sparse matrix: density
The density of a matrix is defined as the ratio of
non-zero entries over the total number of entries
A matrix with density around or less than 0.1 or
10% is usually considered to be sparse
Sparse Matrices
For such sparse N × N matrices, we will
Denote the number of non-zero entries by m

The density of a matrix is defined as the ratio of


non-zero entries over the total number of entries
m
The density is
N2
The row density is the average number of non-zero
values per row: m
N
A matrix with density less than 0.1 or 10 % is usually
considered to be sparse
Usually, m = O(N)
Sparse matrix representation

Col 6
col 0

col 1

col 2

col 3

col 4

col 5
#Rows
#Columns
Row 0 16 0 0 0 12 0 0 #nonzero
Row 1 0 0 11 0 0 3 0 values

Row no.

Col.no.

Value
Row 2 0 5 0 0 0 0 6
Row 3 0 0 0 0 0 0 0
Row 4 13 0 0 0 0 0 4 0 5 7 8
General Matrix 1 0 0 16
representation 2 0 4 12
(Space required =
5x7x2 = 70 bytes) 3 1 2 11
4 1 5 3
5 2 1 5
Triplet 6 2 6 6
representation
(Space required = 7 4 0 13
(1+8)x6 = 54 bytes) 8 4 6 4
Transpose of sparse matrix

Row no.

Row no.
Col.no.

Col.no.
Value

Value
0 5 7 8 0 7 5 8
1 0 0 16 1 0 0 16
2 0 4 12 2 0 4 13
3 1 2 11 3 1 2 5
4 1 5 3 4 2 1 11
5 2 1 5 5 4 0 12
6 2 6 6 6 5 1 3
7 4 0 13 7 6 2 6
8 4 6 4 8 6 4 4
Sparse Matrix A Transpose of Matrix A
return the matrix produced by interchanging
the row and column value of every triple and then sort
them by (row, column).
Transpose: algorithm O(nt)
Transpose (sparse A[], sparse B[])
{
m =A[0].row; n = A[0].col; t = A[0].value; // A is (m x n) matrix
B[0].row = n;
B[0].col = m; // B is (n x m) matrix
B[0].value = t;
IF (t > 0) THEN
{
q = 1;
FOR cl = 0 TO n-1 DO //Transpose by columns
{
FOR p = 1 TO t DO // Search for next element of column cl
{
IF (A[p].col = cl) THEN
{
B[q].row = A[p].col; //Copy from A to B
B[q].col = A[p].row;
B[q].value = A[p].value;
q = q+1;
}
}
}
} //end of IF
}
Fast Transpose: O(n+t)
First determine number of elements in each column
of matrix A.
This gives us the number of elements in each row of
transpose matrix B.
Thus starting point of each row in matrix B can be
easily computed.
Now we can move elements from matrix A one by
one into their correct position in B.
Fast Transpose algorithm
FastTranspose(Sparse A[], Sparse B[])
{
n = A[0].col; terms = A[0].value;
B[0].row = n; B[0].col = A[0].row; B[0].value = terms;
IF (terms > 0) THEN
{
FOR i = 0 TO n-1 DO s[i] = 0; // Compute s[i] = number of terms
FOR i =1 TO terms DO s[A[i].col]++; // in row i of matrix B
t[0] = 1; // Compute t[i] = starting position of row i in B
FOR i =1 TO n-1 DO t[i] = t[i-1] + s[i-1];
FOR i = 1 TO terms DO // Move elements from A to B
{
j = t[A[i].col];
B[j].row = A[i].col;
B[j].col = A[i].row;
B[j].value = A[i].value;
t[A[i].col] = j+1;
}
}
}
Addition of sparse matrices

Value
Value

Value

Row
Row

Row

Col
Col

Col
0 5 7 6 0 5 7 5 0 5 7 8
1 0 0 9 1 0 4 5 1 0 0 9
2 0 4 7 2 1 2 14 2 0 4 12
3 2 3 11 + 3 3 5 4 = 3 1 2 14
4 3 5 13 4 3 6 8 4 2 3 11
5 4 1 5 5 4 6 3 5 3 5 17
6 4 6 8 6 3 6 8
7 4 1 5
Sparse Matrix A Sparse Matrix B
8 4 6 11
Sparse Matrix C
Sparse Matrix: Linked List representation
1. Single chain
0 5 7 6 row col
1 0 0 9
value next
2 0 4 7
3 2 3 11
Node Structure
4 3 5 13
5 4 1 5
6 4 6 8

Sparse Matrix A
5 7 0 0 0 4 2 3 3 5 4 1 4 6
6 9 7 11 13 5 8
Head node
Sparse Matrix: Linked List representation
2. One Linked List Per Row
next
col value Row
Node structure null
0
0 9 4 7
0 5 7 6
1 0 0 9 1 null
2 0 4 7
3 2 3 11 null
2
4 3 5 13 3 11
5 4 1 5 3 null
6 4 6 8 5 13

Sparse Matrix A 4 null


1 5 6 8
Sparse Matrix: Linked List representation
3. Orthogonal List Representation
row col value
Node structure
down next
Row Lists

0 2 3 0 4 4
n
00304
00570 1 2 5 1 3 7
00000 n
02600

null

3 1 2 3 2 6
n
Column list

0 2 3 0 4 4
n
00304
00570 1 2 5 1 3 7
00000
02600

3 1 2 3 2 6
n n
Orthogonal List
null

0 2 3 0 4 4
n n
00304
00570 1 2 5 1 3 7
00000 n
02600
null

3 1 2 3 2 6
n n n

row[]
Sorting algorithms
• Selection sort
• Bubble sort
• Insertion sort
• Merge sort
• Quick sort
• Heap sort
Stable sort algorithms
• A stable sort keeps equal
Ann 98 Ann 98
elements in the same
Bob 90 Joe 98
order
• This may matter when Dan 75 Bob 90
you are sorting data Joe 98 Sam 90
according to some Pat 86 Pat 86
characteristic
Sam 90 Zöe 86
• Example: sorting
students by test scores Zöe 86 Dan 75

original stably
array sorted
Unstable sort algorithms
• An unstable sort may or
Ann 98 Joe 98
may not keep equal
Bob 90 Ann 98
elements in the same order
• Stability is usually not Dan 75 Bob 90
important, but sometimes Joe 98 Sam 90
it is important Pat 86 Zöe 86

Sam 90 Pat 86

Zöe 86 Dan 75

original unstably
array sorted
Selection Sort
The algorithm works as follows:
Find the minimum value in the list
Swap it with the value in the first position
Repeat the steps above for the remainder of the list
(starting at the second position and advancing each
time)

Effectively, the list is divided into two parts:


the sublist of items already sorted, which is built up
from left to right and is found at the beginning, and
the sublist of items remaining to be sorted, occupying
the remainder of the array.
Selection Sort

Rounds: 1 2 3 4 5 6 7 8
Total rounds: N-1
Round1: select smallest from N elements and exchange with 1st element.
Round 2: select smallest from N-1 elements and exchange with 2nd element

Round N-1: select smallest from 2 elements and exchange with (N-1)th
element.
Selection Sort: Algorothm
Selection_Sort( A[], N)
{
FOR i = 0 TO N-2 DO // total N-1 rounds
{
minIndex = i; // index of smallest
FOR j = i+1 TO N-1 DO
{
IF ( A[j] < A[minIndex]) THEN
minIndex=j;
}
swap A[i] A[minIndex]); //swap smallest with top
//of array
}
}
Selection Sort: Analysis
Total work done =
N+
(N-1) +
(N-2) +

+ 2 ≈ N*(N-1)/2 = O(N2)
Bubble Sort
u
n
s
o
r
t
e
d

One round of Bubble Sort

Number of comparisons: N-1 (N-1 pairs)


Result of this round: largest element is settled at bottom
Next Round: repeat for first N-1 elements
Bubble Sort …

unsorted
Bubble Sort: list is already sorted

No swapping performed during first round


Do not perform remaining round(s) is array is already sorted
Bubble Sort: Algorithm
Bubble_Sort(A[], N)
{
FOR i = 1 TO N-1 DO // total N-1 rounds required
{
flag = 0; // to check if any element is swapped
FOR j = 0 TO N-1-i DO
{
IF (A[j] >A[j+1]) THEN
{
swap A[j] A[j+1];
flag = 1; //swapping done; set flag
}
}
IF (flag == 0) THEN break; // array is already sorted; skip remaining rounds
}
}
Bubble Sort: Analysis
Number of comparisons in round 1: N-1
Number of comparisons in round 2: N-2
…..
Number of comparisons in round N-1: 1

Total comparisons done : (N-1)+(N-2)+…. + 1


= (N-1)*(N-2)/2
= O(N2)
Best case: (array already sorted): Ω(N)
Insertion Sort
3 7 12 18
Key=5 to
be inserted
Sorted array

3 5 7 12 18
Insertion Sort
Array containing only first element is sorted.
Insert remaining elements one by one into sorted array.
Insertion Sort: Algorithm
Insertion_Sort(A[], N)
{
FOR j = 1 TO N-1 DO
{
key = A[j];
//put A[j] into the sorted sequence A[0 . . j − 1]
i = j − 1;
WHILE (i > 0 AND A[i] > key) DO
{
A[i +1] = A[i];
i = i − 1;
}
A[i + 1] = key;
}
}
Insertion Sort
• Worst case Analysis
▫ Initial sorted array size = 1
▫ Shifting required to insert A[1] =1
▫ Shifting required to insert A[2] =2
▫ Shifting required to insert A[3] =3
……
▫ Shifting required to insert A[N-1] =N-1
• Total numbers shifted = 1+2+3+….+(N-1)
= O(N2)
Quick Sort
Aim in each round:
Select a pivot element x (say first element)
Find correct position of x in array.
While doing this, move all numbers smaller than x,
before x and all elements larger than x, after x.
Now array is divided into two parts
First: section of array before x (numbers < x)
Second: section of array after x (numbers > x)
Apply quick sort on these two sections.
Quick Sort : One pass
43 22 67 14 54 12 37 80 51 60
Pivot
element i swap j

43 22 67 14 54 12 37 80 51 60
Pivot
element i j
swap

43 22 37 14 54 12 67 80 51 60
Pivot
element i j
swap

43 22 37 14 12 54 67 80 51 60
Pivot
element j i

12 22 37 14 43 54 67 80 51 60
First section Second section
j
Quick_Sort: Algorithm
Quick_Sort(A[], first, last)
{
IF (first < last) THEN
{
pivot = A[first];
i = first;
j = last;
WHILE (i < j) DO
{
WHILE (A[i] <= A[pivot] AND i < last) DO i = i + 1;
WHILE ( A[j] > A[pivot] ) DO j = j - 1;
IF (i < j) THEN
{ // swap A[i] and A[j]
swap A[i] A[j];
}
}
temp = A[pivot];
A[pivot] = A[j];
A[j] = temp;
Quick_Sort (A, first, j-1);
Quick_Sort (A, j+1, last);
}
}
Quick Sort : Analysis
• Depth of recursion: log N times
• In every pass, max N elements are processed.
• Complexity: θ(N logN) average case
• Worst case: O(N2)
Merge Sort
32 11 7 54 72 39 5 26 33 15 23

32 11 7 54 72 39 5 26 33 15 23

11 32 7 54 39 72 5 26 15 33 23

7 11 32 54 5 26 39 72 15 23 33

5 7 11 26 32 39 54 72 15 23 33

5 7 11 15 23 26 32 33 39 54 72
Merge Sort : a recursive algorithm
mergeSort(A[],left,right)
{ // sort A[left .. right]
IF (left < right) THEN
{ // at least two elements
mid = (left+right)/2; //midpoint
mergeSort(A, left, mid); //sort first half
mergeSort(A, mid + 1, right); //sort other half
merge(A, B, left, mid, right); //merge from A to B
copy(B, A, left, right); //copy result back to A
}
}
Merge Sort: Analysis
• Number of passes: Log(N)
• Number of elements processes in each pass: N
• Complexity: O(N logN)
Heap
Definition:
A heap is a list in which each element contains a key,
such that the key in the element at position k in the
list is at least as large as the key in the element at
position 2k + 1 (if it exists), and 2k + 2 (if it exists)
Heap
Building a Heap

Build Heap
The above list is not a heap. Let’s see how to
build it into a heap
Building a Heap

Binary tree after swapping 56 and 65


Building a Heap

Binary tree after swapping 92 and 70

Binary tree after processing 72: no swapping required


Building a Heap

Binary tree after swapping 92 and 60

Binary tree after swapping 60 and 70


Binary tree after swapping 92 and 15

Binary tree after swapping 15 and 70


Binary tree after swapping 15 and 60

Now, the list becomes a heap


Heap: deleteMax
• Swap first element(Max) with last element
• Remove last element from heap
• Adjust the heap so that it satisfies heap property.
Heap: deleteMax
92
70 72

60 65 32 62

15 45 30 56

Swap first with last (92 with 56)

56
70 72

60 65 32 62

15 45 30 92

Remove last element(92)


Heap: deleteMax
56
70 72

60 65 32 62

15 45 30

Heap property disturbed: Adjust it

72
70 56

60 65 32 62

15 45 30

Binary heap after swapping 56 with 72


Heap: deleteMax
72
70 62

60 65 32 56

15 45 30

Binary heap after swapping 56 with 62

Now it is again a Heap


Heap Sort
1. Convert initial array into a heap.
2. deleteMax : actually place largest at end of array.
3. repeat step 2 on reduced size heap.
Heap Sort
0 1 2 3 4 5 6 7 8 9 10

15 60 72 70 56 32 62 92 45 30 65
15
60 72

70 56 32 62

92 45 30 65 Initial tree: not a heap

0 1 2 3 4 5 6 7 8 9 10

92 70 72 60 65 32 62 15 45 30 56
92
70 72

60 65 32 62

15 45 30 56
After converting list into heap
Heap Sort
0 1 2 3 4 5 6 7 8 9 10

72 70 62 60 65 32 56 15 45 30 92
72
70 62

60 65 32 56
After deleting largest element (92) from heap
15 45 30

0 1 2 3 4 5 6 7 8 9 10

70 65 62 60 30 32 56 15 45 72 92
70
65 62

60 30 32 56

15 45 After deleting largest element (72) from heap


Heap Sort
0 1 2 3 4 5 6 7 8 9 10

65 60 62 45 30 32 56 15 70 72 92
65
60 62

45 30 32 56

15 After deleting largest element (70) from heap

0 1 2 3 4 5 6 7 8 9 10

62 60 56 45 30 32 15 65 70 72 92
62
60 56

45 30 32 15

After deleting largest element (65) from heap


Heap Sort
0 1 2 3 4 5 6 7 8 9 10

60 45 56 15 30 32 62 65 70 72 92
60
45 56

15 30 32

After deleting largest element (62) from heap

0 1 2 3 4 5 6 7 8 9 10

56 45 32 15 30 60 62 65 70 72 92
56
45 32

15 30

After deleting largest element (60) from heap


Heap Sort
0 1 2 3 4 5 6 7 8 9 10

45 30 32 15 56 60 62 65 70 72 92
45
30 32

15

After deleting largest element (56) from heap

0 1 2 3 4 5 6 7 8 9 10

32 30 15 45 56 60 62 65 70 72 92
32
30 15

After deleting largest element (45) from heap


Heap Sort
0 1 2 3 4 5 6 7 8 9 10

30 15 32 45 56 60 62 65 70 72 92
30
15
After deleting largest element (32) from heap

0 1 2 3 4 5 6 7 8 9 10

15 30 32 45 56 60 62 65 70 72 92
15
After deleting largest element (30) from heap

0 1 2 3 4 5 6 7 8 9 10

15 30 32 45 56 60 62 65 70 72 92

After deleting largest element (15) from heap


Now array is sorted
Build initial Heap: Algorithm
Build_Heap(A[], N)
{
FOR i=n/2 -1 DOWNTO 0 DO
{
Heapify(A,N, i); // convert array into heap
}
}

Heapify(A[], N,i); //Heap property is disturbed at node i, adjust it


{
left=2*i+1; right=2*i+2;
IF (left < N AND A[left] > A[i]) THEN
largest = left; // find largest of two children
ELSE
largest = i;
IF (right <N AND A[right] > A[largest]) THEN
largest=right;
IF largest NOT = i) THEN
{ //if needed exchange parent with larger child
exchange A[i] A[largest]
Heapify(A,N,largest); //now heap property of child is disturbed, adjust it
}
}
Heap Sort : Algorithm
Heap_Sort(A[],N)
{
FOR i=N-1 DOWNTO 1 DO
{
swap A[0] A[i]; //move largest at end
N=N-1; //remove last element from heap
Heapify(A,N,0); //now adjust heap property of
first node
}
}

Order O(N logN) algorithm

Вам также может понравиться

  • Hashing
    Hashing
    От Everand
    Hashing
    Оценок пока нет
  • 15 HashTables
    15 HashTables
    Документ27 страниц
    15 HashTables
    ayboaydo26
    Оценок пока нет
  • Algorithm Lecture6 Search
    Algorithm Lecture6 Search
    Документ40 страниц
    Algorithm Lecture6 Search
    Hesham Ali Sakr
    Оценок пока нет
  • 05 Hashing
    05 Hashing
    Документ47 страниц
    05 Hashing
    cloudcomputingitasec
    Оценок пока нет
  • Hash Functions
    Hash Functions
    Документ26 страниц
    Hash Functions
    GANESH G 111905006
    Оценок пока нет
  • Hash Tables
    Hash Tables
    Документ43 страницы
    Hash Tables
    reagan oloya
    Оценок пока нет
  • Hashing RPK
    Hashing RPK
    Документ61 страница
    Hashing RPK
    Ankita
    Оценок пока нет
  • Module5 Hashing
    Module5 Hashing
    Документ14 страниц
    Module5 Hashing
    Anver S R
    Оценок пока нет
  • Hashing
    Hashing
    Документ35 страниц
    Hashing
    Adhara Mukherjee
    Оценок пока нет
  • Hashing
    Hashing
    Документ35 страниц
    Hashing
    Adhara Mukherjee
    Оценок пока нет
  • Group 15 Hash Tables
    Group 15 Hash Tables
    Документ42 страницы
    Group 15 Hash Tables
    reagan oloya
    Оценок пока нет
  • Hashing PPT For Student
    Hashing PPT For Student
    Документ53 страницы
    Hashing PPT For Student
    shail
    Оценок пока нет
  • Topic 6 Hashing
    Topic 6 Hashing
    Документ31 страница
    Topic 6 Hashing
    Haire Kahfi Maa Takaful
    Оценок пока нет
  • Hashing: CSE225: Data Structures and Algorithms
    Hashing: CSE225: Data Structures and Algorithms
    Документ14 страниц
    Hashing: CSE225: Data Structures and Algorithms
    Meherin Afroz Mime 1912965642
    Оценок пока нет
  • Module 5
    Module 5
    Документ25 страниц
    Module 5
    vaishnavirai273
    Оценок пока нет
  • Unit IV Hashing and Set 9
    Unit IV Hashing and Set 9
    Документ8 страниц
    Unit IV Hashing and Set 9
    Jasmine Mary
    Оценок пока нет
  • Collision
    Collision
    Документ16 страниц
    Collision
    Swapnil Chaudhari
    Оценок пока нет
  • BCS304-DSA Notes M-5
    BCS304-DSA Notes M-5
    Документ22 страницы
    BCS304-DSA Notes M-5
    sagar2024k
    Оценок пока нет
  • Idst 2016 SA 05 Hashing
    Idst 2016 SA 05 Hashing
    Документ68 страниц
    Idst 2016 SA 05 Hashing
    A Sai Bhargav
    Оценок пока нет
  • Chapter 5 Lec 3
    Chapter 5 Lec 3
    Документ37 страниц
    Chapter 5 Lec 3
    Nuhamin Birhanu
    Оценок пока нет
  • 3 Hashing
    3 Hashing
    Документ20 страниц
    3 Hashing
    Shahnawaz Khan
    Оценок пока нет
  • Done DS GTU Study Material Presentations Unit-4 13032021035653AM
    Done DS GTU Study Material Presentations Unit-4 13032021035653AM
    Документ24 страницы
    Done DS GTU Study Material Presentations Unit-4 13032021035653AM
    Yash Amin
    Оценок пока нет
  • Darshan Institute of Engineering & Technology: Hashing
    Darshan Institute of Engineering & Technology: Hashing
    Документ7 страниц
    Darshan Institute of Engineering & Technology: Hashing
    Pradipsinh Chavda
    Оценок пока нет
  • Hash Table
    Hash Table
    Документ26 страниц
    Hash Table
    RISHITA
    Оценок пока нет
  • Unit 5 Data Structure
    Unit 5 Data Structure
    Документ12 страниц
    Unit 5 Data Structure
    Jaff Bezos
    Оценок пока нет
  • Ders7 - Data Structures and Search Algorithms
    Ders7 - Data Structures and Search Algorithms
    Документ41 страница
    Ders7 - Data Structures and Search Algorithms
    mcsurmeli39
    Оценок пока нет
  • Hashing
    Hashing
    Документ34 страницы
    Hashing
    Amisha Shetty
    Оценок пока нет
  • Overview of Hash Tables
    Overview of Hash Tables
    Документ4 страницы
    Overview of Hash Tables
    sadsda
    Оценок пока нет
  • Hash Tables: Map Dictionary Key "Address."
    Hash Tables: Map Dictionary Key "Address."
    Документ16 страниц
    Hash Tables: Map Dictionary Key "Address."
    Manstall
    Оценок пока нет
  • CH 4
    CH 4
    Документ58 страниц
    CH 4
    Maria Grizelda
    Оценок пока нет
  • 210 Maps PDF
    210 Maps PDF
    Документ39 страниц
    210 Maps PDF
    HaroonRashid
    Оценок пока нет
  • Hashing
    Hashing
    Документ23 страницы
    Hashing
    Harsimran Kaur
    Оценок пока нет
  • Hash Table
    Hash Table
    Документ29 страниц
    Hash Table
    Elamparithi Maniezhilan
    Оценок пока нет
  • Lecture 3.2.2 Collision Resolution Strategies
    Lecture 3.2.2 Collision Resolution Strategies
    Документ35 страниц
    Lecture 3.2.2 Collision Resolution Strategies
    borab25865
    Оценок пока нет
  • Unit Vi (Graphs)
    Unit Vi (Graphs)
    Документ80 страниц
    Unit Vi (Graphs)
    Kumara Ragavendra
    Оценок пока нет
  • SRM LVC 10 Hashing
    SRM LVC 10 Hashing
    Документ19 страниц
    SRM LVC 10 Hashing
    Vibhas Yadav
    Оценок пока нет
  • Week13 1
    Week13 1
    Документ16 страниц
    Week13 1
    tanusha
    Оценок пока нет
  • 03 Hash Tables
    03 Hash Tables
    Документ39 страниц
    03 Hash Tables
    Hien Pham
    Оценок пока нет
  • Chapter 28 Hashing: Hash Table. The Function That Maps A Key To An Index in The Hash Table Is
    Chapter 28 Hashing: Hash Table. The Function That Maps A Key To An Index in The Hash Table Is
    Документ4 страницы
    Chapter 28 Hashing: Hash Table. The Function That Maps A Key To An Index in The Hash Table Is
    rchambilla
    Оценок пока нет
  • Hashing
    Hashing
    Документ42 страницы
    Hashing
    rootsha
    Оценок пока нет
  • Hashing
    Hashing
    Документ14 страниц
    Hashing
    m_sandhyarani1
    Оценок пока нет
  • MIT6 006F11 Lec08 PDF
    MIT6 006F11 Lec08 PDF
    Документ7 страниц
    MIT6 006F11 Lec08 PDF
    whatthefu
    Оценок пока нет
  • Modifed Hash
    Modifed Hash
    Документ42 страницы
    Modifed Hash
    srii21rohith
    Оценок пока нет
  • Unit29 Hashing2
    Unit29 Hashing2
    Документ20 страниц
    Unit29 Hashing2
    Nikila Narayanan
    Оценок пока нет
  • Hash Tables - : Structure
    Hash Tables - : Structure
    Документ21 страница
    Hash Tables - : Structure
    Saaaaaaakkk
    Оценок пока нет
  • Algorithms & Data Structures 06
    Algorithms & Data Structures 06
    Документ13 страниц
    Algorithms & Data Structures 06
    abdh
    Оценок пока нет
  • Hashing
    Hashing
    Документ20 страниц
    Hashing
    [CO - 174] Shubham Mourya
    Оценок пока нет
  • Hashingclass 141012005012 Conversion Gate01
    Hashingclass 141012005012 Conversion Gate01
    Документ19 страниц
    Hashingclass 141012005012 Conversion Gate01
    jai Lakhinana
    Оценок пока нет
  • Dictionaries: Collection of Pairs
    Dictionaries: Collection of Pairs
    Документ28 страниц
    Dictionaries: Collection of Pairs
    bdebbarma
    Оценок пока нет
  • Hashing 1
    Hashing 1
    Документ26 страниц
    Hashing 1
    f180183 Talha Shakil
    Оценок пока нет
  • Chapter 8 - Hashing
    Chapter 8 - Hashing
    Документ26 страниц
    Chapter 8 - Hashing
    Sanjay Jain
    Оценок пока нет
  • Data Structures Using C'
    Data Structures Using C'
    Документ26 страниц
    Data Structures Using C'
    Avirup Ray
    Оценок пока нет
  • CC-Lec 4
    CC-Lec 4
    Документ40 страниц
    CC-Lec 4
    Ch Salman
    Оценок пока нет
  • 11 Hashtable-1
    11 Hashtable-1
    Документ48 страниц
    11 Hashtable-1
    farhan khan
    Оценок пока нет
  • Hashing
    Hashing
    Документ56 страниц
    Hashing
    Lamia Alam
    Оценок пока нет
  • Hashing
    Hashing
    Документ24 страницы
    Hashing
    Prof. Arpita Rajendra Ojha
    Оценок пока нет
  • Chapter10 Part1
    Chapter10 Part1
    Документ12 страниц
    Chapter10 Part1
    Artemis Zeusborn
    Оценок пока нет
  • Sandip University, Nashik: Arvind Kumawat Bsc. Cs Aiml&Vr Open Hashing
    Sandip University, Nashik: Arvind Kumawat Bsc. Cs Aiml&Vr Open Hashing
    Документ25 страниц
    Sandip University, Nashik: Arvind Kumawat Bsc. Cs Aiml&Vr Open Hashing
    Arvind Kumawat
    Оценок пока нет
  • CSE 326: Data Structures Hash Tables: Autumn 2007
    CSE 326: Data Structures Hash Tables: Autumn 2007
    Документ29 страниц
    CSE 326: Data Structures Hash Tables: Autumn 2007
    Keerthana
    Оценок пока нет
  • Hashing in Data Structure
    Hashing in Data Structure
    Документ23 страницы
    Hashing in Data Structure
    Elamathi L
    Оценок пока нет
  • Red-Black Tree: Manoj Kumar DTU, Delhi
    Red-Black Tree: Manoj Kumar DTU, Delhi
    Документ56 страниц
    Red-Black Tree: Manoj Kumar DTU, Delhi
    Ankit Priyarup
    Оценок пока нет
  • Dsa MK Lect10
    Dsa MK Lect10
    Документ68 страниц
    Dsa MK Lect10
    imjd2
    Оценок пока нет
  • DSA MK Lect7 PDF
    DSA MK Lect7 PDF
    Документ77 страниц
    DSA MK Lect7 PDF
    Ankit Priyarup
    Оценок пока нет
  • Greedy Methods: Manoj Kumar DTU, Delhi
    Greedy Methods: Manoj Kumar DTU, Delhi
    Документ44 страницы
    Greedy Methods: Manoj Kumar DTU, Delhi
    Ankit Priyarup
    Оценок пока нет
  • DSA MK Lect4 PDF
    DSA MK Lect4 PDF
    Документ73 страницы
    DSA MK Lect4 PDF
    Ankit Priyarup
    Оценок пока нет
  • Data Structure
    Data Structure
    Документ109 страниц
    Data Structure
    mittalshivam
    Оценок пока нет
  • Graphs Topological Sort Single Source Shortest Path: Manoj Kumar DTU, Delhi
    Graphs Topological Sort Single Source Shortest Path: Manoj Kumar DTU, Delhi
    Документ25 страниц
    Graphs Topological Sort Single Source Shortest Path: Manoj Kumar DTU, Delhi
    Ankit Priyarup
    Оценок пока нет
  • Binomial Heaps: Manoj Kumar DTU, Delhi
    Binomial Heaps: Manoj Kumar DTU, Delhi
    Документ36 страниц
    Binomial Heaps: Manoj Kumar DTU, Delhi
    Ankit Priyarup
    Оценок пока нет
  • Dsa MK Lect1
    Dsa MK Lect1
    Документ109 страниц
    Dsa MK Lect1
    Ankit Priyarup
    Оценок пока нет
  • DSA MK Lect3 PDF
    DSA MK Lect3 PDF
    Документ75 страниц
    DSA MK Lect3 PDF
    Ankit Priyarup
    Оценок пока нет
  • SE
    SE
    Документ197 страниц
    SE
    Ankit Priyarup
    Оценок пока нет
  • Monsters Tournament Challenge
    Monsters Tournament Challenge
    Документ3 страницы
    Monsters Tournament Challenge
    Ankit Priyarup
    Оценок пока нет
  • The Complete Sonniss Catalog - 2016.Csv
    The Complete Sonniss Catalog - 2016.Csv
    Документ29 страниц
    The Complete Sonniss Catalog - 2016.Csv
    Ankit Priyarup
    Оценок пока нет
  • Readme
    Readme
    Документ2 страницы
    Readme
    Ankit Priyarup
    Оценок пока нет
  • Monsters Tournament Challenge Info
    Monsters Tournament Challenge Info
    Документ3 страницы
    Monsters Tournament Challenge Info
    Ankit Priyarup
    Оценок пока нет
  • Detailed Lesson Plan in Mathematics 5 (For Ranking)
    Detailed Lesson Plan in Mathematics 5 (For Ranking)
    Документ7 страниц
    Detailed Lesson Plan in Mathematics 5 (For Ranking)
    Lerry John Acedera Giray
    86% (14)
  • Sap Script
    Sap Script
    Документ15 страниц
    Sap Script
    amarpoonam
    Оценок пока нет
  • Feature Selection in Machine Learning
    Feature Selection in Machine Learning
    Документ34 страницы
    Feature Selection in Machine Learning
    Shivam Pandey
    Оценок пока нет
  • Faq - Tech Asst.2019
    Faq - Tech Asst.2019
    Документ5 страниц
    Faq - Tech Asst.2019
    Vicky Karthikeyan
    Оценок пока нет
  • Dsds
    Dsds
    Документ46 страниц
    Dsds
    p
    Оценок пока нет
  • 8086 Development Tools
    8086 Development Tools
    Документ7 страниц
    8086 Development Tools
    Jashuva Chukka
    0% (1)
  • The Windows 7 Boot Process SBSL
    The Windows 7 Boot Process SBSL
    Документ4 страницы
    The Windows 7 Boot Process SBSL
    NeoRandom
    Оценок пока нет
  • Citronix Ci5000 Labeltec - Se
    Citronix Ci5000 Labeltec - Se
    Документ6 страниц
    Citronix Ci5000 Labeltec - Se
    Josemar M. Ferreira
    Оценок пока нет
  • bk9 13
    bk9 13
    Документ29 страниц
    bk9 13
    Rahique Shuaib
    Оценок пока нет
  • Increase Size of Log Segment Sybase
    Increase Size of Log Segment Sybase
    Документ5 страниц
    Increase Size of Log Segment Sybase
    AnkitSharma
    Оценок пока нет
  • ENHANCING DATA ENCRYPTION STANDARD USING TIME N
    ENHANCING DATA ENCRYPTION STANDARD USING TIME N
    Документ42 страницы
    ENHANCING DATA ENCRYPTION STANDARD USING TIME N
    christian Mac
    Оценок пока нет
  • Tia Portal Vs Studio 5000
    Tia Portal Vs Studio 5000
    Документ76 страниц
    Tia Portal Vs Studio 5000
    onyeka
    Оценок пока нет
  • Machine Translation
    Machine Translation
    Документ234 страницы
    Machine Translation
    Dendi Tri Utama
    Оценок пока нет
  • C++ Interview
    C++ Interview
    Документ15 страниц
    C++ Interview
    Vishnuvardhan Vishnu
    Оценок пока нет
  • HOL Hive
    HOL Hive
    Документ85 страниц
    HOL Hive
    Kishore Kumar
    Оценок пока нет
  • Parkey Project 2019: Brikelda Liçaj Elisa Pashku Sara Mboqe Xhemal Kodragjini
    Parkey Project 2019: Brikelda Liçaj Elisa Pashku Sara Mboqe Xhemal Kodragjini
    Документ50 страниц
    Parkey Project 2019: Brikelda Liçaj Elisa Pashku Sara Mboqe Xhemal Kodragjini
    elisa
    Оценок пока нет
  • CC Magic User Guide
    CC Magic User Guide
    Документ15 страниц
    CC Magic User Guide
    Zara GL -Escritora-Ensayista. Asesora Marketing
    0% (1)
  • Seismic Analysis of Buildings
    Seismic Analysis of Buildings
    Документ35 страниц
    Seismic Analysis of Buildings
    sidk1984
    Оценок пока нет
  • MSX Magazine No. 4 1986-01 Laser Magazine FR
    MSX Magazine No. 4 1986-01 Laser Magazine FR
    Документ32 страницы
    MSX Magazine No. 4 1986-01 Laser Magazine FR
    kmyl75
    Оценок пока нет
  • Pcad 2006 Ascii
    Pcad 2006 Ascii
    Документ164 страницы
    Pcad 2006 Ascii
    mamanca1
    Оценок пока нет
  • PL SQL Exercise4
    PL SQL Exercise4
    Документ2 страницы
    PL SQL Exercise4
    Nishant Andhale
    Оценок пока нет
  • Driving Better Business Decisions: Real-World Asset Tracking
    Driving Better Business Decisions: Real-World Asset Tracking
    Документ22 страницы
    Driving Better Business Decisions: Real-World Asset Tracking
    api-28071294
    Оценок пока нет
  • Manual YAMAHA M7CL
    Manual YAMAHA M7CL
    Документ312 страниц
    Manual YAMAHA M7CL
    Agyness Supertramp
    Оценок пока нет
  • Jidocleyines Ewidbu Ndvoskidfg49854
    Jidocleyines Ewidbu Ndvoskidfg49854
    Документ33 страницы
    Jidocleyines Ewidbu Ndvoskidfg49854
    John Borogz
    Оценок пока нет
  • Motorcycle Parkingsystem: Central Park Malljakarta
    Motorcycle Parkingsystem: Central Park Malljakarta
    Документ61 страница
    Motorcycle Parkingsystem: Central Park Malljakarta
    Anonymous yMOMM9bs
    Оценок пока нет
  • Case Study Template PDF Version
    Case Study Template PDF Version
    Документ2 страницы
    Case Study Template PDF Version
    Marcus Eden-Ellis
    100% (1)
  • DP Biometric 13115 Drivers
    DP Biometric 13115 Drivers
    Документ162 страницы
    DP Biometric 13115 Drivers
    Jauhar Jauharabad
    Оценок пока нет
  • Python Scripting
    Python Scripting
    Документ2 страницы
    Python Scripting
    Ravikumar Tumuluri
    Оценок пока нет
  • Cheat Sheet
    Cheat Sheet
    Документ163 страницы
    Cheat Sheet
    fatalist3
    Оценок пока нет
  • God and Golem Review
    God and Golem Review
    Документ1 страница
    God and Golem Review
    Nirmal Patel
    Оценок пока нет