Merge Sort CSC 172 Sorting Lists with Merge





















































































- Slides: 85

Merge. Sort CSC 172

Sorting Lists with Merge. Sort Note: a list of length 1 is sorted If two lists are sorted, how can you combine them into one sorted list? How can you divide one list into two?

Recursive Mergesort Basis: A list of length 1 is sorted Induction: for lists of >= 1 element 1. Split the list into two equal (as possible) parts 2. Recursively sort each part 3. Merge the result of the two recursive sorts One at a time, select the smaller element from the two fronts of each list Physical demo

Node split public static Node split(Node head){ Node second. Node; if (head == null) return null; else if (head. get. Next() == null) return null; else { second. Node = head. get. Next(); head. set. Next(second. Node. get. Next()); second. Node. set. Next(split(second. Node. get. Next()); return second. Node; } }

A linked List 6 1 3 2 5 9

A linked List in Split head 6 1 3 2 5 9

A linked List in Split second. Node = head. get. Next(); Split 0 head second. Node 6 1 3 2 5 9

A linked List in Split head. set. Next(second. Node. get. Next()); Split 0 head second. Node 6 1 3 2 5 9

First recursive call in Split second. Node. set. Next(split(second. Node. get. Next()); Split 0 head second. Node 6 1 3 2 5 9

New Split split(second. Node. get. Next()); Split 1 head second. Node 6 1 3 2 5 9

New Split head. set. Next(second. Node. get. Next()); Split 1 head second. Node 6 1 3 2 5 9

Second recursive Split second. Node. set. Next(split(second. Node. get. Next()); Split 1 head second. Node 6 1 3 2 5 9

Second recursive Split second. Node. set. Next(split(second. Node. get. Next()); Split 2 head second. Node 6 1 3 2 5 9

Second recursive Split head. set. Next(second. Node. get. Next()); Split 2 head second. Node 6 1 3 2 5 9 second. Node. set. Next(split(second. Node. get. Next()); ? What gets returned? return second. Node;

Backing up second. Node. set. Next(split(second. Node. get. Next()); Split 1 head second. Node 6 1 3 2 5 9

Backing up second. Node. set. Next(split(second. Node. get. Next()); Split 1 head second. Node 6 1 3 What gets returned? 2 5 9 return second. Node;

Backing up second. Node. set. Next(split(second. Node. get. Next()); Split 1 head second. Node 6 1 3 What gets returned? 2 5 9 return second. Node;

Backing up second. Node. set. Next(split(second. Node. get. Next()); Split 1 head second. Node 6 1 3 What gets returned? 2 5 9 return second. Node;

Node Merge public static Node merge(Node list 1, Node list 2){ if (list 1 == null) return list 2; else if (list 2 == null) return list 1; else if (list 1. get. Data. compare. To(list 2. get. Data()) < 0) { list 1. set. Next(merge(list 1. get. Next(), list 2); return list 1; } else { list 2. set. Next(merge(list 1, list 2. get. Next()); return list 2; } }

Two linked Lists 1 3 7 2 8 9

Two linked Lists in merge 1 3 7 2 8 9 list 1 merge 0 list 2

Two linked Lists in merge 0 th 1 3 7 2 8 9 list 1 merge 1 list 2

Two linked Lists in merge 0 th 1 3 7 2 8 9 list 1 merge 2 list 2 1 st

Two linked Lists in merge 0 th 2 nd 1 3 7 2 8 9 list 1 merge 3 list 2 1 st

Two linked Lists in merge 0 th 2 nd 3 rd 1 3 7 2 8 9 list 1 merge 4 list 2 1 st

Two linked Lists in merge 0 th 2 nd 1 3 7 2 8 9 list 1 merge 3 list 2 1 st

Two linked Lists in merge 0 th 2 nd 1 3 7 2 8 9 list 1 merge 2 list 2 1 st

Two linked Lists in merge 0 th 2 nd 1 3 7 2 8 9 list 1 merge 2 list 2 1 st

Two linked Lists in merge 0 th 2 nd 1 3 7 2 8 9 list 1 merge 0 list 2 1 st

Node Merge. Sort public static Node merge. Sort(Node list){ Node second. List; if (list == null) return null; else if (list. get. Next() == null) return list; else { second. List = split(list); return merge(merge. Sort(list), merge. Sort(second. List)); } }

Mergesort 3 1 4 1 5 9 2 6

Mergesort: Split 6 3 1 4 1 5 9 2

Mergesort: Split 6 3 1 4 1 5 9 2

Mergesort: Split 9 6 3 1 4 1 5 2

Mergesort: Split 9 6 3 1 4 1 5 2

Mergesort: Split 1 9 6 3 1 4 5 2

Mergesort: Split 1 9 6 3 1 4 5 2

Mergesort: Split 1 1 9 6 3 4 5 2

Mergesort: Split 1 1 9 6 3 4 5 2

Mergesort: Split 6 1 1 9 3 4 5 2

Mergesort: Split 6 1 1 9 3 4 5 2

Mergesort: Split 1 6 1 9 3 4 5 2

Mergesort: Split 1 6 1 9 3 4 5 2

Mergesort: Split 6 1 1 9 3 4 5 2

Mergesort: Split 6 1 1 9 3 4 5 2

Mergesort: Merge 6 1 1 9 3 4 5 2

Mergesort: Merge 6 1 1 9 3 4 5 2

Mergesort: Merge 1 6 1 9 3 4 5 2

Mergesort: Split 1 6 1 9 3 4 5 2

Mergesort: Split 1 6 9 1 3 4 5 2

Mergesort: Split 1 6 9 1 3 4 5 2

Mergesort: Merge 1 6 9 1 3 4 5 2

Mergesort: Merge 1 6 9 1 3 4 5 2

Mergesort: Merge 1 6 1 9 3 4 5 2

Mergesort: Merge 6 1 1 9 3 4 5 2

Mergesort: Merge 6 1 1 9 3 4 5 2

Mergesort: Merge 1 1 6 9 3 4 5 2

Mergesort: Merge 1 1 6 9 3 4 5 2

Mergesort: Split 1 1 6 9 3 4 5 2

Mergesort: Split 1 1 6 9 2 3 4 5

Mergesort: Split 1 1 6 9 2 3 4 5

Mergesort: Split 1 1 6 9 4 2 3 5

Mergesort: Split 1 1 6 9 4 2 3 5

Mergesort: Split 1 1 6 9 2 4 3 5

Mergesort: Split 1 1 6 9 2 4 3 5

Mergesort: Merge 1 1 6 9 2 4 3 5

Mergesort: Merge 1 1 6 9 2 3 5 4

Mergesort: Merge 1 1 6 9 2 4 3 5

Mergesort: Split 1 1 6 9 2 4 3 5

Mergesort: Split 1 1 6 9 2 4 5 3

Mergesort: Split 1 1 6 9 2 4 5 3

Mergesort: Merge 1 1 6 9 2 4 5 3

Mergesort: Merge 1 1 6 9 2 4 5 3

Mergesort: Merge 1 1 6 9 2 4 3 5

Mergesort: Merge 1 1 6 9 4 2 3 5

Mergesort: Merge 1 1 6 9 4 2 3 5

Mergesort: Merge 1 1 6 9 2 3 4 5

Mergesort: Merge 1 1 6 9 2 3 4 5

Mergesort: Merge 1 6 9 1 2 3 4 5

Mergesort: Merge 6 9 1 1 2 3 4 5

Mergesort: Merge 6 9 1 1 2 3 4 5

Mergesort: Merge 6 9 1 1 2 3 4 5

Mergesort: Merge 6 9 1 1 2 3 4 5

Mergesort: Merge 6 9 1 1 2 3 4 5

Mergesort: Merge 1 1 2 3 4 5 6 9
Quick sort merge sort
Quick sort merge sort
172+172+283+283
Internal and external sort
Lesson 2 assignment a sort of sorts answers
Why is merge sort n log n
Algoriyma
Recurrence relation of bubble sort
Generic merge sort c
Disadvantage of merge sort
Merge adalah
Merge sort mips
Solving recurrences substitution method
Merge sort advantages
Merge sort pseudocode
Binary merge sort
Bubble sort scheme
Sort and merge in cobol
Merge sort medium
Why is merge sort n log n
Two phase multiway merge sort
Shell sort python
Merge list
Merge sort loop invariant
What is the correctness of algorithm
Merge sort complexity
Cara kerja quick sort
Mips selection sort
Compare between bubble sort and selection sort.
Bubble sort vs selection sort
How selection sort works
______ can be comparison-based or noncomparison-based.
Difference between insertion sort and bubble sort
Bubble sort 5-66
Radix bucket sort
Compare selection sort and quick sort algorithm
Pseudo code for bubble sort
172
Damsoda
Msz 172-1
Phys 172
Jhs 172
Phys 172
Genghis khan 168-0
Niza talukder
Cessna 172 cockpit instruments
Cbtis 172
To kill a mockingbird page count
172,16,0,1
Utaps estimator
Particl clicker
C172r poh
Cbtis 172
16 0
čl.172 ovršnog zakona
Hydraulic system cessna 172
Ping 172
Mca 172-3
Astm d 3774
Cessna 172 powerplant
Cessna 172 vg diagram
Kelas a ip address
Http 172.28 0.96 grhnet
Iterative prediction of motion
Sp 172 łódź
Hb 172 alaska
Python plot list of lists
Java types of lists
Wish lists year
Parallel structure in lists
Clwords
Blockly c
Political lists new
Lists of tuples python
Making words lists
Semicolon vs colon
"new bookmarking lists 2018"
Swst spelling lists
Python list methods
Singular and plural
Qri word lists
Cons in lisp
Read write inc spelling lists
Lesson 3 lists practice
Https://www.diigo.com
Ucl library reading lists