快速排序
#include <stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<stdbool.h>void Swap(int* p, int* q){int buf;buf = *p;*p = *q;*q = buf;}void QuickSort(int* a, int low, int high){int i = low;int j = high;int key = a[low];if (low >= high) //如果low >= high说明排序结束了{return;}while (low < high) //该while循环结束一次表示比较了一轮{while (low < high && key <= a[high]){--high; //向前寻找}if (key > a[high]){Swap(&a[low], &a[high]);++low;}while (low < high && key >= a[low]){++low; //向后寻找}if (key < a[low]){Swap(&a[low], &a[high]);--high;}}QuickSort(a, i, low - 1); //用同样的方式对分出来的左边的部分进行同上的做法QuickSort(a, low + 1, j); //用同样的方式对分出来的右边的部分进行同上的做法}
