implement quicksort in SML with these requirements type (''a * ''a ->bool) -> ''alist -> ''a list example: quicksort (op >) [1, 6,2, 3, 4] = [6, 4, 3, 2,1] quicksort (op <)["beet", "bear","bank"] = ["bank","bear", "beet"]   Quicksort is a sorting method that uses pivot. See the full description below.   fun pivot(value, nil) = (nil,nil,nil)  |  pivot (value, first :: others) = let val (smalls,equals,bigs) = pivot(value, others) in if first < value then (first::smalls,equals,bigs) else if first = value then (smalls,first::equals,bigs) else (smalls,equals,first::bigs) end;   Quicksort. Quicksort sorts by recursively pivoting the values around the first element (the pivot), then appending the resulting lists together. Example: [5, 1, 6, 2, 9, 0, 2, 6] pivot = 5 [1, 2, 0, 2][5][6, 9, 6]//recursion on first and third lists pivot = 1//pivot = 6 [0][1][2, 2][5][6, 6][9]//recursion on third and fifth lists pivot=2/pivot=6 [0][1][2][2][5][6][6][9] Append the lists together: [0, 1, 2, 2, 5, 6, 6, 9]

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

implement quicksort in SML with these requirements

type (''a * ''a ->bool) -> ''alist -> ''a list

example:

quicksort (op >) [1, 6,2, 3, 4] = [6, 4, 3, 2,1]

quicksort (op <)["beet", "bear","bank"] = ["bank","bear", "beet"]

 

Quicksort is a sorting method that uses pivot. See the full description below.

 

fun pivot(value, nil) = (nil,nil,nil)

 |  pivot (value, first :: others) =

let

val (smalls,equals,bigs) =

pivot(value, others)

in

if first < value then (first::smalls,equals,bigs)

else if first = value then (smalls,first::equals,bigs)

else (smalls,equals,first::bigs)

end;

 

Quicksort.

Quicksort sorts by recursively pivoting the values around the first element (the pivot), then appending the resulting lists together.

Example:

[5, 1, 6, 2, 9, 0, 2, 6]

pivot = 5

[1, 2, 0, 2][5][6, 9, 6]//recursion on first and third lists

pivot = 1//pivot = 6

[0][1][2, 2][5][6, 6][9]//recursion on third and fifth lists

pivot=2/pivot=6

[0][1][2][2][5][6][6][9]

Append the lists together: [0, 1, 2, 2, 5, 6, 6, 9]

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education