Hi,
I have a list of a datatype tag_t (similar to int). I need to sort this list using quicksort. This is what I tried.
I get the list to be sorted from a map and call quicksort on it.
My quicksort function isCode:std::list<tag_t> unsortedList = mpIter->second; Quicksort(unsortedList, 0, unsortedList.size()-1);
Code:void Quicksort(std::list < tag_t > &tempList, int first, int last) { int pivot; if (first < last) { pivot = Pivot(tempList, first, last); Quicksort(tempList, first, pivot - 1); Quicksort(tempList, pivot + 1, last); } }Code:int Pivot(std::list < tag_t > &tempList, int first, int last) { int iStatus = ITK_ok; int p = first; list < tag_t > ::iterator listIter = tempList.begin(); tag_t tempTag = *listIter; tag_t firstTag = *listIter; int iComparison = 0; for (int i = first + 1; i <= last; i++) { date_t date1; date_t date2; /*the tag_t datatypes actually corresponds to date values, so I get the date values and compare them; if iComparison !=1 then date1 is earlier than date2. I am sorting the tags by ascending order of their dates*/ iStatus = get_lastorder_date(tempTag, date1); SIEMENS_LOG_ERROR; iStatus = get_lastorder_date(*listIter, date2); SIEMENS_LOG_ERROR; iStatus = POM_compare_dates(date1, date2, &iComparison); SIEMENS_LOG_ERROR; if (iComparison != 1) { listIter++; p++; Swap(tempTag, *listIter); } } Swap(*listIter, firstTag); return p; }Even after calling the Quicksort function, the order of the unsortedList <tag_t> is unchanged.Code:void Swap( tag_t &v1, tag_t &v2 ) { tag_t tmpVal; tmpVal = v1; v1 = v2; v2 = tmpVal; }
Can someone please help me figure out the issue.
Thanks.



LinkBack URL
About LinkBacks


