0

在我的在线课程的一项作业中,我必须使用快速排序算法对单词列表进行排序。我能够对数字列表进行排序,但不能对单词进行排序。函数 IthChar 接受 2 个参数,一个字符串和一个表示字符串索引的整数,并返回位于索引位置的字符。
例如 IthChar("Paul", 0) --> P

下面是快速排序、交换和 swapPivot 函数:

void quickSort(string array[], int left, int right)
{
      int I, J, pivot;
      char chI, chJ, chPivot;

      if(left<right)
      {
                    pivot=left;
                    I=left;
                    J=right;
                    while(I<J)
                    {
                               chI=IthChar(array[I], 0);
                               chJ=IthChar(array[J], 0);
                               chPivot=IthChar(array[I], 0);
                               while(chI<=chPivot&&I<right)
                               I++;
                               while(chJ>chPivot)
                               J--;
                               if(I<=J)
                               {
                                       swap(array, I, J);
                               }
                    }   
                    swapPivot(array, pivot, J);
                    quickSort(array, left, J-1);
                    quickSort(array, J+1, right); 
      }
}

void swap(string array[], int loc, int loc1) 
{
          int temp;

          temp=array[loc];
          array[loc]=array[loc1];
          array[loc1]=temp;
}     

void swapPivot(string array[], int pivot, int J)
{
          int temp;

          temp=array[pivot];
          array[pivot]=array[J];
          array[J]=temp;
}

感谢:D

4

1 回答 1

0

您应该编写(或重用,如果您已经有一个)字符串比较函数。

于 2013-07-24T11:28:10.497 回答