top of page
Caută
  • Poza scriitoruluioanaunciuleanu

Quick Sort Algorithm in C++



Quick sort is a recursive sorting algorithm. It uses the idea of divide et conquer. To solve the array, we have to choose a pivot, which is approximately in the middle of the array. We must find an element that is greater than the pivot, and one that is smaller and swap them to be in order. We find other values with the same properties until the pivot is in its place. We recursively apply the same method to solve the order for other values and pivots, applying Quick sort for the left part and then for the right part of the array.


// Quick Sort

#include <iostream>
using namespace std;

int partitionArray(int *arrayOfNumbers, int startIndex,int lastIndex)
{
    int pivotValue = arrayOfNumbers[lastIndex];
    int pivotIndex = startIndex;
    int temporary;

    // Check if value is smaller than pivot and swap if necessary
    for(int i = startIndex; i < lastIndex; i++)
    {
    	if(arrayOfNumbers[i] <= pivotValue)
        {
            temporary = arrayOfNumbers[i];
            arrayOfNumbers[i] = arrayOfNumbers[pivotIndex];
            arrayOfNumbers[pivotIndex] = temporary;
            pivotIndex++;
        }
     }

      // Swap the values of pivot and last value
      temporary = arrayOfNumbers[lastIndex];
      arrayOfNumbers[lastIndex] = arrayOfNumbers[pivotIndex];
      arrayOfNumbers[pivotIndex]= temporary;

     return pivotIndex;
 }

 void quickSort(int *arrayOfNumbers, int startIndex, int lastIndex)
 {
    if(startIndex < lastIndex)
    {
         int pivotIndex = partitionArray(arrayOfNumbers, startIndex, lastIndex);
             quickSort(arrayOfNumbers, startIndex, pivotIndex - 1);
             quickSort(arrayOfNumbers, pivotIndex + 1, lastIndex);
    }
}
void printElementsOfArray(int arrayOfNumbers[], int numberOfElements)
{
  for (int i = 0; i < numberOfElements; ++i)
  {
    cout << arrayOfNumbers[i] << " ";
  }
  cout << endl;
}

int main(void)
{
  int arrayOfNumbers[] = {4, 7, 9, 3, 21, 18, 23, 15, 8, 17};
  int numberOfElements = sizeof(arrayOfNumbers) / sizeof(arrayOfNumbers[0]);
  int startIndex = 0;
  int lastIndex = numberOfElements - 1;

  quickSort(arrayOfNumbers, startIndex, lastIndex);
  cout<<"The sorted array is: \n";
  printElementsOfArray(arrayOfNumbers, numberOfElements);
}

290 afișări0 comentarii

Postări recente

Afișează-le pe toate

Weighted Job Scheduling in JAVA

You receive a list of jobs that have three elements: start time, finish time and profit. You have to schedule the jobs with no overlapping, in order to obtain the maximum profit. Solution: 1. static

Tiling Problem in JAVA

You can use a board that is 2 x n size. The tiles are of size 2 x 1. Count the number of ways to tile the board. Tiles can be placed vertically 2 x 1 or horizontally as 1 x 2. Solution: 1. static

bottom of page