一、思路
- 选取待排序段的第一个元素x为临界点,使其左侧数字均小于等于x,右侧均大于等于x,完成一次分割
- 标记两个检查断点low和high,保证low和high所在的数字分别小于和大于x,不满足条件则交换,满足则low和high向中间靠拢,继续检查余下位置。
- 完成一次分割之后,low和high相遇处为分割点,将分割点两侧再次进行排序。
- 以此类推,直到完成全部排序。
二、代码示例
#include <stdio.h>
/*********************************
* *
* 快速排序算法 *
* *
*********************************/
#define N 10 //排序数字个数
void quicksort(int a[], int low, int high);
int split(int a[], int low, int high);
int main(int argc,