Quicksort并跟踪指数

时间:2017-02-02 15:38:04

标签: c++ turbo-c++

我想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和数组。

1 个答案:

答案 0 :(得分:0)

设置一个整数0 .. N -1。

的数组

然后编写快速排序,以便它将该数组作为int *和要排序的数组作为const data_type *(const unsigned char *与关联的数据元素宽度很好)。

现在只需将整数数组quick_sort,使用索引进入数据数组,以便进行比较。