Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,52 +0,0 @@
|
|||
Function SortThree( [Array] $data )
|
||||
{
|
||||
if( $data[ 0 ] -gt $data[ 1 ] )
|
||||
{
|
||||
if( $data[ 0 ] -lt $data[ 2 ] )
|
||||
{
|
||||
$data = $data[ 1, 0, 2 ]
|
||||
} elseif ( $data[ 1 ] -lt $data[ 2 ] ){
|
||||
$data = $data[ 1, 2, 0 ]
|
||||
} else {
|
||||
$data = $data[ 2, 1, 0 ]
|
||||
}
|
||||
} else {
|
||||
if( $data[ 0 ] -gt $data[ 2 ] )
|
||||
{
|
||||
$data = $data[ 2, 0, 1 ]
|
||||
} elseif( $data[ 1 ] -gt $data[ 2 ] ) {
|
||||
$data = $data[ 0, 2, 1 ]
|
||||
}
|
||||
}
|
||||
$data
|
||||
}
|
||||
|
||||
Function QuickSort( [Array] $data, $rand = ( New-Object Random ) )
|
||||
{
|
||||
$datal = $data.length
|
||||
if( $datal -gt 3 )
|
||||
{
|
||||
[void] $datal--
|
||||
$median = ( SortThree $data[ 0, ( $rand.Next( 1, $datal - 1 ) ), -1 ] )[ 1 ]
|
||||
$lt = @()
|
||||
$eq = @()
|
||||
$gt = @()
|
||||
$data | ForEach-Object { if( $_ -lt $median ) { $lt += $_ } elseif( $_ -eq $median ) { $eq += $_ } else { $gt += $_ } }
|
||||
$lt = ( QuickSort $lt $rand )
|
||||
$gt = ( QuickSort $gt $rand )
|
||||
$data = @($lt) + $eq + $gt
|
||||
} elseif( $datal -eq 3 ) {
|
||||
$data = SortThree( $data )
|
||||
} elseif( $datal -eq 2 ) {
|
||||
if( $data[ 0 ] -gt $data[ 1 ] )
|
||||
{
|
||||
$data = $data[ 1, 0 ]
|
||||
}
|
||||
}
|
||||
$data
|
||||
}
|
||||
|
||||
QuickSort 5,3,1,2,4
|
||||
QuickSort 'e','c','a','b','d'
|
||||
QuickSort 0.5,0.3,0.1,0.2,0.4
|
||||
$l = 100; QuickSort ( 1..$l | ForEach-Object { $Rand = New-Object Random }{ $Rand.Next( 0, $l - 1 ) } )
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
function quicksort($array) {
|
||||
$less, $equal, $greater = @(), @(), @()
|
||||
if( $array.Count -gt 1 ) {
|
||||
$pivot = $array[0]
|
||||
foreach( $x in $array) {
|
||||
if($x -lt $pivot) { $less += @($x) }
|
||||
elseif ($x -eq $pivot) { $equal += @($x)}
|
||||
else { $greater += @($x) }
|
||||
}
|
||||
$array = (@(quicksort $less) + @($equal) + @(quicksort $greater))
|
||||
}
|
||||
$array
|
||||
}
|
||||
$array = @(60, 21, 19, 36, 63, 8, 100, 80, 3, 87, 11)
|
||||
"$(quicksort $array)"
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
function quicksort($in) {
|
||||
$n = $in.count
|
||||
switch ($n) {
|
||||
0 {}
|
||||
1 { $in[0] }
|
||||
2 { if ($in[0] -lt $in[1]) {$in[0], $in[1]} else {$in[1], $in[0]} }
|
||||
default {
|
||||
$pivot = $in | get-random
|
||||
$lt = $in | ? {$_ -lt $pivot}
|
||||
$eq = $in | ? {$_ -eq $pivot}
|
||||
$gt = $in | ? {$_ -gt $pivot}
|
||||
@(quicksort $lt) + @($eq) + @(quicksort $gt)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue