数据结构之快速排序的 c++实现(中间元素为基值)

来源:互联网 发布:python smtp 编辑:程序博客网 时间:2024/05/21 06:31
#include<iostream>using namespace std;int partition(int *P,int l ,int r,int & pivot){ int temp;while(l<r){while(P[l]>=pivot && l<r)    // l右移直到l对应的值小于轴值l++;while(P[r]<=pivot && l<r)    // l右移直到l对应的值大于于轴值r--;temp=P[l];    // 交换l和r对应的值P[l]=P[r];P[r]=temp;}return l;}void Quick_sort(int *P,int i,int j){if(j<=i) return;           // 判断元素个数为0或1时不进行排序直接返回int temp;int pivotindex = (i+j)/2;  // 确定轴值的位置temp = P[j];               // 将轴值调放在最后P[j] = P[pivotindex];P[pivotindex] = temp;int k = partition(P,i,j,P[j]); // 将右边的第一个位置放在k中temp = P[k];           // 将轴值放到r和l相遇的位置P[k] = P[j];P[j] = temp;Quick_sort(P,i,k-1);   // 递归调用将序列分段排序Quick_sort(P,k+1,j);}int main(){int A[10];for(int i=0;i<10;i++)cin>>A[i];Quick_sort(A,0,9);for(int i=0;i<10;i++)cout<<A[i]<<" ";system("pause");}

0 0