| Newbie | | Join Date: Sep 2006
Posts: 2
| |
Sorry that this is such a trivial question...
For an assignment I had to write the quicksort program: - //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;
-
}
-
-
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.
|