快速排序(qsort)

来源:互联网 发布:知乎怎样匿名提问 编辑:程序博客网 时间:2024/05/18 00:50

快速排序(qsort)


代码如下:


#include <stdio.h>void Qsort(int *a, int low, int high){if (low < high){int first = low;  int last = high; int key = a[first];  // 第一个位置取为枢轴位置while (first < last){while (first < last && key < a[last]) --last; // 从右往左:扫描到第一个小于key(枢轴)位置last a[first] = a[last];  // 将右边第一个小于key的值,赋值给枢轴位置while (first < last && a[first] < key) ++first; // 从左往右:扫描到第一个大于key(枢轴)位置firsta[last] = a[first];  // 将左边第一个大于key的值,赋值给枢轴位置}a[first] = key;  // 中间值已到位(这时first==last)Qsort(a, low, first - 1);// 递归左半部分Qsort(a, first + 1, high);// 递归右斗部分}}int main(){int a[] = { 57, 68, 59, 52, 72, 28, 96, 33, 24 };Qsort(a, 0, sizeof(a) / sizeof(a[0]) - 1);for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++)printf("%d ", a[i]);getchar();return 0;}


0 0