|
20鱼币
#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[i] < array[mid])
{
i++;
}
if(array[j] >= array[mid])
{
j--;
}
if(array[i] >= array[mid] && array[j] < array[mid])
{
num = array[i];
array[i] = array[j];
array[j] = num;
}
printf("i = %d, j = %d\n", i, j);
}
for(i = 0; i < length - 1; i++)
{
if(array[i] > array[i + 1])
{
quick_sort(length, array);
}
}
}
int main(void)
{
int i;
int array[10] = {5, 2, 9, 4, 7, 8, 6, 3, 0, 1};
quick_sort(10, array);
for(i = 0; i < 10; i++)
{
printf("%d ", array[i]);
}
return 0;
}
问题描述 为什么函数quick_sort里的array[mid]=0而不是7?
#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[left];
while (i < j) {
while (i < j && arr[j] >= key) {
j--;
}
arr[i] = arr[j];
while (i < j && arr[i] <= key) {
i++;
}
arr[j] = arr[i];
}
arr[i] = key;
quick_sort(arr, left, i - 1);
quick_sort(arr, i + 1, right);
}
int main(void) {
int i;
int array[10] = {5, 2, 9, 4, 7, 8, 6, 3, 0, 1};
quick_sort(array, 0, 9);
for(i = 0; i < 10; i++)
{
printf("%d ", array[i]);
}
return 0;
}
|
|