silver-crow 发表于 2023-9-18 08:21:57

求助!!!

#include <stdio.h>

void quick_sort(int length, int array[]);

void quick_sort(int length, int array[])
{
    int i, j, mid, num;
    mid = length / 2 - 1;
    for(i = 0, j = length - 1; i <= j;)
    {
      if(array < array)
      {
            i++;
      }

      if(array >= array)
      {
            j--;
      }

      if(array >= array && array < array)
      {
            num = array;
            array = array;
            array = num;
      }

      printf("i = %d, j = %d\n", i, j);
    }

    for(i = 0; i < length - 1; i++)
    {
      if(array > array)
      {
            quick_sort(length, array);
      }
    }
}

int main(void)
{
    int i;
    int array = {5, 2, 9, 4, 7, 8, 6, 3, 0, 1};

    quick_sort(10, array);

    for(i = 0; i < 10; i++)
    {
      printf("%d ", array);
    }

    return 0;
}
问题描述   为什么函数quick_sort里的array=0而不是7?

小甲鱼 发表于 2023-9-18 08:21:58

#include <stdio.h>

void quick_sort(int* arr, int left, int right);

void quick_sort(int* arr, int left, int right) {
    if (left >= right) {
      return;
    }

    int i = left;
    int j = right;
    int key = arr;

    while (i < j) {
      while (i < j && arr >= key) {
            j--;
      }

      arr = arr;

      while (i < j && arr <= key) {
            i++;
      }

      arr = arr;
    }

    arr = key;

    quick_sort(arr, left, i - 1);
    quick_sort(arr, i + 1, right);
}

int main(void) {
    int i;
    int array = {5, 2, 9, 4, 7, 8, 6, 3, 0, 1};

    quick_sort(array, 0, 9);

    for(i = 0; i < 10; i++)
    {
      printf("%d ", array);
    }

    return 0;
}

isdkz 发表于 2023-9-18 08:22:01

在这段代码中,我们可以看到mid的值被计算为length / 2 - 1。在这个特定的例子中,length的值为10,因此mid的值为4。在main函数中,我们可以看到数组array的第5个元素的值为7。然而,在quick_sort函数中,我们并没有看到任何代码来改变array的值。因此,在函数中,array的值应该是数组中第5个元素的值,即7。如果array的值为0,则可能是由于在调用函数时,数组中第5个元素的值被更改为0。

silver-crow 发表于 2023-9-18 09:43:13

isdkz 发表于 2023-9-18 08:22
在这段代码中,我们可以看到mid的值被计算为length / 2 - 1。在这个特定的例子中,length的值为10,因此mid ...

那应该怎么修改呢?
页: [1]
查看完整版本: 求助!!!