如何排序指针数组指向的数组?

时间:2016-04-22 15:02:26

标签: c arrays sorting pointers

我需要对由指针数组指向的数组进行排序 使用此功能(我只需要指针,没有这些[])

void getSort(int** p2a, int arrSizes[]) //p2a is a array of pointers to diffrent arrays

我尝试了冒泡排序:

if (i < 5)
{
    for (j = 1; j < arrSizes[i]; j++) // I started with 1 bcz i dont want to sort the first value
    {
        for (k = j + 1; k < arrSizes[i]; k++)
        {
            if (*(*(p2a + i) + j) > *(*(p2a + i) + k))
            {
                temp = *(*(p2a + i) + j);
                *(*(p2a + i) + j) = *(*(p2a + i) + k);
                *(*(p2a + i) + k) = temp;
            }
        }
        i++;
    }
}

但它排序不好...... 例子:

  • 之前:3 9 3 7
  • 之后:3 3 9 7
  • 之前:3 6 1 7
  • 之后:3 1 6 7
  • 之前:4 9 7 1 7
  • 之后:4 9 7 1 7

1 个答案:

答案 0 :(得分:0)

更改if for for解决问题

for (i = 0; i < NUM; i++)
{
    for (j = 1; j < arrSizes[i]; j++)
    {
        for (k = j + 1; k < arrSizes[i]; k++)
        {
            if (*(*(p2a + i) + j) > *(*(p2a + i) + k))
            {
                temp = *(*(p2a + i) + j);
                *(*(p2a + i) + j) = *(*(p2a + i) + k);
                *(*(p2a + i) + k) = temp;
            }
        }
    }
}