一 快速排序
1 法一
#include <stdio.h>
int Partition(int a[],int low,int high) //返回枢纽位置
{
int key=a[low]; //把第一个元素作为枢纽元素
while(low<high)
{
while(low<high&&a[high]>=key) --high; //从后面循环,若元素大于枢纽,继续循环
//否则把低位元素赋值为小于枢纽元素的值,已经保存过低位元素,不用交换,直接替换即可
a[low]=a[high];
//从前面循环,若小于枢纽,继续往前走,不然把该值赋给高位元素
while(low<high&&a[low]<=key) ++low;
a[high]=a[low];
}
//当low为high时,退出循环
a[low]=key; //把枢纽值还给它
return low;
}
void QSort(int a[],int low,int high)
{
if(low<high)
{
int pivotkey=Partition(a,low,high);
QSort(a,low,pivotkey-1);
QSort(a,pivotkey+1,high);
}
}
int main()
{
int a[]={5};
QSort(a,0,0);
printf("a排序后是:\n");
for(int i=0;i<1;i++)