快速排序

来源:互联网 发布:中国未来 通胀 知乎 编辑:程序博客网 时间:2024/06/06 05:02
#include <iostream>#include <cstdio>void QuickSort(int a[],int start,int end){int i,j,flag;    if(start<end){        i = start,j = end;   /*将排序初始节点以及末尾节点下标记录*/    flag = a[i];  /*初始以a[0]为分界点*/     while(i<j){while(a[j]>flag&&i<j){ /*先向右开始寻找,向右寻找小于分界点的值*/     j--;}  if(i<j){             /*满足条件才调换,否则不做处理*/ a[i++] = a[j]; }while(a[i]<=flag&&i<j){/*向左寻找小于分界点的值,注意等于号*/     i++;    }     if(i<j){   a[j--] = a[i];    }    }    a[i] = flag; /*至此已划分为左边小于a[0],右边大于a[0]*/ QuickSort(a,start,i-1);  /*左边递归排序*/ QuickSort(a,i+1,end);   /*右边递归排序*/ }} int main(int argc, char** argv) { int a[] = {2,6,3,5,9,7}; QuickSort(a,0,sizeof(a)/sizeof(a[0])-1);  for(int i = 0;i<sizeof(a)/sizeof(a[0]);i++){ printf("%d ",a[i]);  }return 0;} 

原创粉丝点击