Sorry that this is such a trivial question...
For an assignment I had to write the quicksort program:
However, this prints the array each step of the process. How do I change my code to only display the array once it is sorted?
Thanks.
For an assignment I had to write the quicksort program:
Code:
//This program sorts a set of integers using the quicksort method.
#include "stdafx.h"
#include "genlib.h"
#include "simpio.h"
#include <stdio.h>
#define size 7
void getArray(int arr[size]);
void quicksort(int arr[size], int beg, int end);
int partition(int arr[size], int beg, int end);
void dispArray(int arr[size]);
void swap(int arr[], int i, int j);
main()
{
int arr[size], beg, end;
getArray(arr);
end = size - 1;
beg = 0;
quicksort(arr, beg, end);
}
void getArray(int arr[])
{
int i;
for (i=0; i <= size - 1; i++)
{
printf("\nEnter next integer: ");
arr[i]=GetInteger();
}
dispArray(arr);
}
void dispArray(int arr[]){
int i;
printf("\n");
for (i=0; i <= size - 1; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
void quicksort(int arr[], int beg, int end)
{
int middle;
if(beg >= end) dispArray(arr);
else{
middle = partition(arr, beg, end);
quicksort(arr, beg, middle - 1);
quicksort(arr, middle + 1, end);
}
}
int partition(int arr[], int beg, int end) {
int j;
int pivot;
int i;
pivot = beg;
j = beg;
for(i=beg+1;i<=end;i++)
{
if (arr[i] < arr[pivot])
{
j++;
swap(arr, j, i);
}
}
swap(arr, j, beg);
return(j);
}
void swap(int arr[], int i, int j) {
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
Thanks.
Comment