*measure-InsertionSort.ps1* ================ This PowerShell script measures the speed of the InsertionSort algorithm. InsertionSort is a simple sorting algorithm that builds the final sorted array (or list) one item at a time. It is much less efficient on large lists than more advanced algorithms such as quicksort, heapsort, or merge sort. Parameters ---------- ```powershell PS> ./measure-InsertionSort.ps1 [[-numIntegers] ] [] -numIntegers Specifies the number of integers to sort Required? false Position? 1 Default value 1000 Accept pipeline input? false Accept wildcard characters? false [] This script supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable, and OutVariable. ``` Example ------- ```powershell PS> ./measure-InsertionSort.ps1 🧭 Sorting 1000 integers by InsertionSort took 0.4234268 sec ``` Notes ----- Author: Markus Fleschutz | License: CC0 Related Links ------------- https://github.com/fleschutz/PowerShell Script Content -------------- ```powershell <# .SYNOPSIS Measures the speed of InsertionSort .DESCRIPTION This PowerShell script measures the speed of the InsertionSort algorithm. InsertionSort is a simple sorting algorithm that builds the final sorted array (or list) one item at a time. It is much less efficient on large lists than more advanced algorithms such as quicksort, heapsort, or merge sort. .PARAMETER numIntegers Specifies the number of integers to sort .EXAMPLE PS> ./measure-InsertionSort.ps1 🧭 Sorting 1000 integers by InsertionSort took 0.4234268 sec .LINK https://github.com/fleschutz/PowerShell .NOTES Author: Markus Fleschutz | License: CC0 #> param([int]$numIntegers = 1000) class InsertionSort { static Sort($targetList) { $n = $targetList.count for ($i = 0; $i -lt $n - 1; $i++) { $j = $i + 1 while ($j -gt 0) { if ($targetList[$j - 1] -gt $targetList[$j]) { $temp = $targetList[$j - 1] $targetList[$j - 1] = $targetList[$j] $targetList[$j] = $temp } $j-- } } } } $list = (1..$numIntegers | foreach{Get-Random -minimum 1 -maximum $numIntegers}) $stopWatch = [system.diagnostics.stopwatch]::startNew() [InsertionSort]::Sort($list) [float]$elapsed = $stopWatch.Elapsed.TotalSeconds "🧭 Sorting $numIntegers integers by InsertionSort took $elapsed sec" exit 0 # success ``` *(generated by convert-ps2md.ps1 using the comment-based help of measure-InsertionSort.ps1 as of 09/01/2023 17:51:53)*