944,123 Members | Top Members by Rank

Ad:
  • C Discussion Thread
  • Unsolved
  • Views: 2551
  • C RSS
Nov 4th, 2004
0

Please help with my quicksort

Expand Post »
I need help ... I think I know what I'm doing one min. then the next I'm lost :o . Please help ...


#include <stdlib.h>
#include <conio.h>
#include <stdio.h>

#define SIZE 5

void quickSort(int[], int );
void q_sort(int[], int, int ) ;


// ***** Main program *****
int main(void)
{
int list_sorted, count = SIZE; //no. of machines used
int values[SIZE]={4,6,7,5,1}; //no. of task

// **** initialize contents of array; ****
for(int i=0; i<=SIZE;i++)
printf("Original values are: %d", values[i]);

list_sorted = quickSort(values,count);
printf("NUMBERS SORTED IN DECENDING ORDER: %d", list_sorted);
getch();
return 0;

/*******************/

/*The following function defines the array size*/

void quickSort(int numbers[], int array_size) //An array of numbers & their
//size is passed as a parameter.
{
q_sort(numbers, 0, array_size - 1); //a call to q_sort with the array values,
// 0 and the amt of numbers in array
// minus 1 - passed as the parameter

} //end of quickSort


void q_sort(int numbers[], int left, int right)
{
int pivot, l_hold, r_hold;

l_hold = left; //l_hold is assigned 0
r_hold = right; //r_hold is assigned array_size minus 1
pivot = numbers[left]; //pivot is assigned a value in array as pivot
while (left < right)
{
while ((numbers[right] >= pivot) && (left < right))
right--;
if (left != right)
{
numbers[left] = numbers[right];
left++;
}
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right)
{
numbers[right] = numbers[left];
right--;
}
}
numbers[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
if (left < pivot)
q_sort(numbers, left, pivot-1);
if (right > pivot)
q_sort(numbers, pivot+1, right);
}
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
dats is offline Offline
2 posts
since Nov 2004
Nov 5th, 2004
0

Re: Please help with my quicksort

Okay...what is it doing that you don't want? As much as I enjoy working with algorithms and data structures, debugging somebody else's quicksort usually isn't enjoyable. Your recursive calls are correct, so the problem is in the partitioning. I see several potential problems, but the best way for you to figure them out is to step through a small data set by hand to check your logic.
Administrator
Reputation Points: 6442
Solved Threads: 1393
Bad Cop
Narue is offline Offline
11,807 posts
since Sep 2004
Nov 11th, 2004
0

Re: Please help with my quicksort

I'll c what I can do ... thanx for replying
Reputation Points: 10
Solved Threads: 0
Newbie Poster
dats is offline Offline
2 posts
since Nov 2004

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C Forum Timeline: Many Errors while doing this assignment
Next Thread in C Forum Timeline: program





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC