#include<stdio.h>
#include<iostream>
using namespace std;
#define Maxsize 10
int Partition(int A[],int low,int high){//一次划分
int pivot=A[low];//将第一个元素定为数轴元素
while(low<high){//跳出条件
while(low<high&&A[high]>=pivot) --high;
A[low]=A[high];//令右侧 high指针左移,直到找到一个比枢轴pivot小的元素
while(low<high&&A[low]<=pivot) ++low;
A[high]=A[low]; //令左侧 low指针右移,直到找到一个比枢轴pivot大的元素
}
A[low]=pivot;//枢轴元素放入最终位置
return low;
}
void QuickSort(int A[],int low,int high){
if(low<high){//递归跳出条件
int pivotpos = Partition(A,low,high);//一次划分
QuickSort(A,low,pivotpos-1);
QuickSort(A,pivotpos+1,high);//对两个子表进行递归排序
}
}
int main(void){
int A[8];
//49 38 65 97 76 13 27 49
A[0]=49;
A[1]=38;
A[2]=65;
A[3]=97;
A[4]=76;
A[5]=13;
A[6]=27;
A[7]=49;
printf("原始数组:");
for(int i=0;i<8;i++)
{
printf("%d ",A[i]);
}
printf("\n");
//快速排序
QuickSort(A,0,7);
printf("快速排序后的数组:");
for(int i=0;i<8;i++)
{
printf("%d ",A[i]);
}
}
b站王道考研-数据结构8.3_2快速排序代码-实现
最新推荐文章于 2024-07-10 18:22:15 发布