您的位置:首页 > 其它

快速排序遇到的小问题

2015-09-20 15:31 162 查看
代码如下:

#include<stdio.h>

#define N 10

void quicksort(int a[], int low, int high);
int split(int a[], int low, int high);

int main(void)
{
int a
, i;

printf("Enter %d numbers to be sorted:",N);
for (i = 0; i < N; i++)
scanf("%d",&a[i]);

quicksort(a, 0, N - 1);

printf("In sortrd order:");
for (i = 0; i < N; i++)
printf("%d ",a[i]);
printf("\n");

return 0;
}
void quicksort(int a[], int low, int high)
{
int middle;

if(low >= high) return; //(1)关于这个return的返回问题,它会返回一个什么值呢
middle = split(a, low, high);
quicksort(a, low, middle - 1);
quicksort(a, middle + 1, high);

}
int split(int a[], int low, int high)
{
int part_element = a[low];
while(1){

while(low < high && part_element < a[high])

high--;
if(low >= high) break;
a[low++] = a[high];

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

low++;
if(low >= high) break;
a[high--] = a[low];

}
a[high] = part_element;
return high;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: