快速排序程序出现了蜜汁错误,错误如图(当输入值》601时就回变成垃圾值)

http://img.mukewang.com/5831178600012f9305470438.jpg#include<stdio.h>

void main()

{

int a[10];

int i;

int p(int a[], int low, int high);

void  Zong(int a[], int n);

void q(int a[], int low, int high);

printf("请输入10个数字,用空格隔开!!\n");

for (i = 0; i < 10; i++)

scanf_s("%d", &a[i]);

printf("快速排序法由小到大排序后:\n");

Zong(a, 11);

for (i = 0; i < 10; i++)

printf("%d   ", a[i]);

}

int p(int a[], int low, int high)

{

int key = a[low], p;

while (low<high)

{

while (low<high && a[high] >= key)

--high;

p = a[low]; a[low] = a[high]; a[high] = p;

while (low<high && a[low] <= key)

++low;

p = a[high]; a[high] = a[low]; a[low] = p;

}

a[low] = key;

return low;

}

void q(int a[], int low, int high)

{

int j;

if (low<high)


{

j = p(a, low, high);//讲第一次排序结果作为枢轴

q(a, low, j - 1);//递归调用排序low到j-1

q(a, j + 1, high);//递归调用排序j+1到high

}

}

void  Zong(int a[], int n)

{

q(a, 1, n);//第一个作为枢轴,

}

http://img.mukewang.com/5831146d0001144308230166.jpg

XPCZ
浏览 1260回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP