快速排序(1)

来源:互联网 发布:3d碰撞检测算法 编辑:程序博客网 时间:2024/05/29 13:34
#include "stdio.h"//最朴素的快速排序,使用的是分治的策略//循环不变式为:下标index在[q,i]时,有A[index] <= pivot,下标index在[i+1,j]时,有A[index] > pivot,下标index在[j+1,r-1],A[x]还没有和pivot比较。int PARTITION (int *A,int q,int r) {//下标从1开始int i = q - 1;int j;int pivot = A[r];for (j = q;j < r;j++) {if (A[j] <= pivot) {int t;i = i + 1;t = A[i];A[i] = A[j];A[j] = t;}}A[r] = A[i + 1];A[i + 1] = pivot;return i + 1;}//这个过程类似于二叉树的线序遍历void QUICK_SORT (int *A,int q,int r) {if (q >= r) {return;}else {int p = PARTITION (A,q,r);QUICK_SORT (A,q,p - 1);QUICK_SORT (A,p + 1,r);}}

原创粉丝点击