快速排序遇到的小问题
程序代码:
#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[N], 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; }
书上的一道快速排序程序,当分析了原程序后,了解了算法。便自己根据书上的思维按印象来写,写完后,程序闪退无法运行,对比书上程序,发现是忘了(1)那行代码,分析之后,还是无法理解那个return会返回什么值,这个调试也无法看出那行的作用呀。。虚心求教