请教C语言的问题,请大家帮忙!

来源:百度知道 编辑:UC知道 时间:2024/05/12 06:44:16
#include<stdio.h>
#define MAX 20

int main(void)
{
int i, list[MAX] = {0, 21, 98, 67, 32, 98, 0, 12, 31, 7, 88, 93, 63, 6, 88, 17, 67, 54, 100, 1};

void Quick_Sort(int[ ], int, int);

printf("排序前\n");
for(i = 0; i < MAX; i++)
printf("%4d", list[i]);

Quick_Sort(list, 0, MAX);

printf("排序后\n");
printf("%d", list[i]);

return 0;

}

void Quick_Sort(int list[ ], int left, int right)
{
int pivot;
int i, j;
int temp;

if(left < right)
{
i = left;
j = right + 1;

pivot = list[left];

do
{
do
{
i++;
}while(list[i] < pivot);

do
{
j--;
}while(list[j] > pivot);

if(i < j)
{
temp = list[i];
list[i] = list[j];

你看看你排序后的显示,没有for循环,只有显示一个,加个for就好了

#include<stdio.h>
#define MAX 20

int main(void)
{
int i, list[MAX] = {0, 21, 98, 67, 32, 98, 0, 12, 31, 7, 88, 93, 63, 6, 88, 17, 67, 54, 100, 1};

void Quick_Sort(int[ ], int, int);

printf("排序前\n");
for(i = 0; i < MAX; i++)
printf("%4d", list[i]);

Quick_Sort(list, 0, MAX);

printf("排序后\n");
for(i = 0; i < MAX; i++)
printf("%4d", list[i]);

return 0;

}

void Quick_Sort(int list[ ], int left, int right)
{
int pivot;
int i, j;
int temp;

if(left < right)
{
i = left;
j = right + 1;

pivot = list[left];

do
{
do
{
i++;
}while(list[i] < pivot);

do
{
j--;