Example 1: quicksort
function partition(list, start, end) {
const pivot = list[end];
let i = start;
for (let j = start; j < end; j += 1) {
if (list[j] <= pivot) {
[list[j], list[i]] = [list[i], list[j]];
i++;
}
}
[list[i], list[end]] = [list[end], list[i]];
return i;
}
function quicksort(list, start = 0, end = undefined) {
if (end === undefined) {
end = list.length - 1;
}
if (start < end) {
const p = partition(list, start, end);
quicksort(list, start, p - 1);
quicksort(list, p + 1, end);
}
return list;
}
quicksort([5, 4, 2, 6, 10, 8, 7, 1, 0]);
Example 2: quicksort in code
#include <iostream>
using namespace std;
void QuickSort(int arr[], int start, int end);
int Partition(int arr[], int start, int end);
void SwapArrMem(int arr[], int a, int b);
int main()
{
int arr[4];
cout << "enter " << sizeof(arr) / sizeof(arr[0]) << " numbers. press enter after input" << endl;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
cin >> arr[i];
}
cout << endl << "The sorted numbers are:" << endl << endl;
QuickSort(arr, 0, sizeof(arr) / sizeof(arr[0]) - 1);
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
cout << arr[i] << endl;
}
}
void QuickSort(int arr[], int start, int end)
{
if (start >= end) return;
int index = Partition(arr, start, end);
QuickSort(arr, start, index - 1);
QuickSort(arr, index + 1, end);
}
int Partition(int arr[], int start, int end)
{
int pivotindex = start;
int pivotvalue = arr[end];
for (int i = start; i < end; i++)
{
if (arr[i] < pivotvalue)
{
SwapArrMem(arr, i, pivotindex);
pivotindex++;
}
}
SwapArrMem(arr, pivotindex, end);
return pivotindex;
}
void SwapArrMem(int arr[], int a, int b)
{
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}