我想quciksort一个给定的数组,并跟踪索引。
函数排序unsorted_arr[]={3,5,6,6,7,4,5}
并提供sorted_arr[]={3,4,5,5,6,6,7}
,并且还应返回sorted_indices[]={0,5,1,6,2,3,4}
之类的内容。
这是函数
//int unsorted_arr[],sorted_arr[],sorted_indices[];
void quickSort(int arr[], int left, int right)
{
int i = left, j = right;
sorted_indices[i]=left;sorted_indices[j]=right;
int tmp;
int pivot = arr[(left + right) / 2];
/* partition */
while (i <= j) {
while (arr[i] < pivot)
{sorted_indices[i]=i;
i++; }
while (arr[j] > pivot)
{sorted_indices[j]=j;
j--; }
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
sorted_indices[i]=j;
sorted_indices[j]=i;
arr[j] = tmp;
i++;
j--;
}
};
/* recursion */
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}
注意:我仅限于使用Turbo C ++ 3.0和数组。
答案 0 :(得分:0)
设置一个整数0 .. N -1。
的数组然后编写快速排序,以便它将该数组作为int *和要排序的数组作为const data_type *(const unsigned char *与关联的数据元素宽度很好)。
现在只需将整数数组quick_sort,使用索引进入数据数组,以便进行比较。