/* * 快速排序 * */ #include <stdio.h> #define LEN 10 void QuickSort(int * F, int low, int high); int FindPos(int * F, int low, int high); int main() { int i; int F[] = {-2, 1, -45, 5, 4, -3}; QuickSort(F, 0, 5); //第2,3个参数表示第一个和最后一个元素的下标 for (i=0; i<6; i++) printf("%d ", F[i]); printf("\n"); return 0; } void QuickSort(int * F, int low, int high) { int pos, i; if (low < high) { pos = FindPos(F, low, high); //找到第一个元素的位置 for (i=0; i<6; i++) printf("%d ", F[i]); printf("\n"); QuickSort(F, low, pos-1); QuickSort(F, pos+1, high); } } int FindPos(int * F, int low, int high) { int val = F[low]; while (low < high) { while (low < high && F[high] >= val) high--; F[low] = F[high]; while (low < high && F[low] <= val) low++; F[high] = F[low]; } //执行完该循环后,low和high是相等的 F[low] = val; return low; //high可以改为low, 但不能改为val 也不能改为a[low] 也不能改为a[high] }