首页 > 解决方案 > 使用C中的指针按升序对数组进行排序

问题描述

我正在编写一个程序,它创建一个从 1 到 100 的随机数数组,并按升序对它们进行排序。下面是执行此操作的工作代码,但我需要对其进行修改,以便“交换”函数使用指针。对交换函数的调用应如下所示:swap(???,???) 其中两个输入是指针。实现这一目标的最佳方法是什么?

    #include<stdio.h>
    #include<math.h> 

    int main()
    {
       void fillArray(int sizeArray, int array[sizeArray]);
       void printArray(int sizeArray, int array[sizeArray]);
       void sortArray(int sizeArray, int array[sizeArray]);

       int sizeArray;

       printf("\nSize of the array? ");
       scanf("%d", &sizeArray);

       int array[sizeArray];

       fillArray(sizeArray,array);
       sortArray(sizeArray, array);
       printArray(sizeArray, array);
    }

    void fillArray(int sizeArray, int array[sizeArray])
    {
       int increment;

       for(increment=0; increment<sizeArray; increment++)
       {
          array[increment]=rand()%101;
       }
    }

    void sortArray(int sizeArray, int array[sizeArray])
    {
       void swap(int increment2, int increment, int array[]);
       int increment, increment2, temp;

       for (increment=0; increment < sizeArray ; increment++)
       {
          for (increment2=increment+1; increment2 < sizeArray; increment2++)
          {   
             swap(increment2, increment, array);
          }
       }
    }

    void swap(int increment2, int increment, int array[])
    {
       int temp;
       if (array[increment2] < array[increment])
             {
                temp=array[increment];
                array[increment]=array[increment2];
                array[increment2]=temp;
             }
    }

    void printArray(int sizeArray, int array[sizeArray])
    {
       int increment=0;

       printf("\nHere's the sorted array:\n");

       while(increment<21)
       {
          printf("\n    array[%d] is %d", increment, array[increment]);
          increment++;
       }
    }

输出应如下所示:

标签: carrayssorting

解决方案


您需要修复函数调用以使参数带有指针。

void swap(int *increment2, int* increment)

然后在你需要的交换功能中

您将需要尊重整数*。

Example
int n1;
int* x = 100
n1 = *x;

在未来的例子中你可能需要尊重

您的函数接受指针

void swap(int *increment2, int* increment)

如果您有整数或其他数据类型来引用它们,请参考它们的地址,您可以执行 & 进行引用。

int i = 5;
int* x;
x = &i;

x 现在是指向 i 地址的整数指针。


推荐阅读