为什么函数quick_sort里的array[mid]=0而不是7?
#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? 在这个快速排序算法中,中间值mid被初始化为数组长度length的一半减1,即mid=4。在排序开始时,首先比较array和array的值,发现array小于array,所以i自增1,此时i等于1。接下来比较array和array的值,发现array等于0,而0正好是数组中的一个元素。因此,此时mid所代表的值就是0,而不是7。所以,在这个算法中,mid所代表的值是会变化的,取决于数组的排序情况。 isdkz 发表于 2023-9-15 16:54
在这个快速排序算法中,中间值mid被初始化为数组长度length的一半减1,即mid=4。在排序开始时,首先比较arr ...
array = 5, array = 9, array = 0
i = 0, j = 8
array = 5, array = 7, array = 0
i = 0, j = 7
array = 5, array = 3, array = 0
i = 0, j = 6
这个是我运行后的一部分结果,i的值始终为0没有变化 666{:5_104:}
页:
[1]