Сортировка по алгоритму randomized-quicksort - C#
Формулировка задачи:
Нужен код сортировки массива за алгоритмом сортировки randomized- quicksort. Не могу найти.
Решение задачи: «Сортировка по алгоритму randomized-quicksort»
textual
Листинг программы
using System;
class QSort {
static void swap(int[]arr, int left, int right) {
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
}
static void qsort(int[] arr, int left, int right) {
int i, last;
if ( left >= right )
return;
swap(arr, left, (left + right) / 2);
last = left;
for ( i = left + 1; i <= right; ++i )
if ( arr[i] <= arr[left] )
swap(arr, ++last, i);
swap(arr, left, last);
qsort(arr, left, last - 1);
qsort(arr, last + 1, right);
}
public static void Main() {
int elementsCount = 20;
int[] arr = new int[elementsCount];
Random rnd = new Random();
for ( int i = 0; i < elementsCount; ++i )
arr[i] = rnd.Next(0, 100);
Console.WriteLine("Unsorted:");
foreach ( int n in arr )
Console.Write("{0,3}", n);
Console.WriteLine();
qsort(arr, 0, elementsCount - 1);
Console.WriteLine("Sorted:");
foreach ( int n in arr )
Console.Write("{0,3}", n);
Console.WriteLine();
}
}