使用指针进行选择排序

时间:2015-02-10 05:01:22

标签: c++ arrays sorting pointers selection-sort

我正在尝试使用数组指针进行选择排序。

void sort(int size, int *ptr)
{
int temp;
bool swap;
do
{
    swap = false;
    for (int count = 0; count < (size - 1); count++)
    {
        if (*ptr[count] > *ptr[count + 1])
        {
            temp = *ptr[count];
            *ptr[count] = *ptr[count + 1];
            *ptr[count + 1] = temp;
            swap = true;
        }
    }
} while (swap);
}

我得到很多错误说非法指示因为使用*时必须是指针。我在其他方法中使用它很好它只是这个它有麻烦。这是我正在使用的电话。

sort(arraySize, numArray);

所有内容都已声明并以其他方式工作。

5 个答案:

答案 0 :(得分:1)

使用ptr[]代替*ptr[]因为, ptr是指针,如果与[]一起使用,则返回该位置的元素,就像数组一样。

void sort(int size, int *ptr)
{
int temp;
bool swap;
do
{
    swap = false;
    for (int count = 0; count < (size - 1); count++)
    {
        if (ptr[count] > ptr[count + 1])
        {
            temp = ptr[count];
            ptr[count] = ptr[count + 1];
            ptr[count + 1] = temp;
            swap = true;
        }
    }
} while (swap);
}

答案 1 :(得分:0)

错误在*ptr[count] 这是指针解除引用的错误语法。

ptr[count]*(ptr + count)

答案 2 :(得分:0)

这里的编译错误已删除版本。

void sort(int size, int *ptr)
{
int temp;
bool swap;
do
{
    swap = false;
    for (int count = 0; count < (size - 1); count++)
    {
        if (ptr[count] > ptr[count + 1])
        {
            temp = ptr[count];
            ptr[count] = ptr[count + 1];
            ptr[count + 1] = temp;
            swap = true;
        }
    }
} while (swap);
}

答案 3 :(得分:0)

另请阅读:C++ Using pointers for selection sort function

更多示例:http://www.codemiles.com/c-examples/c-selection-sort-t2916.html

*ptr[count]没有任何意义

ptr - 指针 *ptr - 值 - 取消引用

答案 4 :(得分:0)

这是正确的结构 在使用数组的指针表示法时,不得使用*,使用指针名称时不要使用&#39; *&#39; itslef指的是指针数组的0索引

void sort(int size, int *ptr)
{
int temp;
bool swap;
do
{
    swap = false;
    for (int count = 0; count < (size - 1); count++)
    {
        if (ptr[count] > ptr[count + 1])
        {
            temp = ptr[count];
            ptr[count] = ptr[count + 1];
            ptr[count + 1] = temp;
            swap = true;
        }
    }
} while (swap);
}