diff --git a/快速排序 b/快速排序 new file mode 100644 index 0000000..2569e56 --- /dev/null +++ b/快速排序 @@ -0,0 +1,44 @@ +#include +int a[101], n;//定义成全局变量,方便在子函数中使用; +void quicksort(int left, int right) +{ + int i, j, t, temp; + if(left > right) + return; + temp = a[left];//temp中存的基准数 + i = left; + j = right; + while(i != j) + { + //顺序很重要,要先从右往左找 + while(a[j] > temp && i < j) + j --; + //再从左往又找 + while(a[i] <= temp && i < j) + i ++; + //交换两个数所在数组中的位置 + if(i < j) + { + t = a[i]; + a[i] = a[j]; + a[j] = t; + } + } + //最终将基准数归位 + a[left] = a[i]; + a[i] = temp; + quicksort(left, i - 1);//继续处理左边的,这里是一个递归的过程 + quicksort(i + 1, right);//继续处理右边的 +} +int main() +{ + int j ,i, t; + //读入数据 + scanf("%d", &n) + for(int i = 1; i <= n; i ++) + scanf("%d", &a[i]); + quicksort(1,n); + for(int i = 1; i <= n; i ++) + printf("%d ",a[i]); + return 0; +} \ No newline at end of file