Sorting

Implementation of various sorting algorithms.

1. Merge Sort

void MergeSort::Merge(std::vector<int> &nums, int begin, int end, int mid)
{
    std::vector<int> left(mid - begin + 1);
    std::vector<int> right(end - mid);

    for (int i = 0; i < left.size(); i++)
        left[i] = nums[begin + i];
    for (int i = 0; i < right.size(); i++)
        right[i] = nums[mid + 1 + i];

    int i = 0, j = 0, k = begin;
    while (i < left.size() && j < right.size())
    {
        if (left[i] < right[j])
            nums[k++] = left[i++];
        else
            nums[k++] = right[j++];
    }

    while (i < left.size())
        nums[k++] = left[i++];
    while (j < right.size())
        nums[k++] = right[j++];
}
void MergeSort::Sort(std::vector<int> &nums, int begin, int end)
{
    if (begin >= end)
        return;
    int mid = begin + (end - begin) / 2;
    Sort(nums, begin, mid);
    Sort(nums, mid + 1, end);
    Merge(nums, begin, end, mid);
}
void MergeSort::Sort(std::vector<int> &nums)
{
    if (nums.size() < 2)
        return;
    Sort(nums, 0, nums.size() - 1);
}

2. Quick Sort

3. Heap Sort

4. Bubble Sort

5. Insertion Sort

6. Selection Sort

Last updated

Was this helpful?