/*
快速排序
Time:2017.2.28
Name:LQS
*/
#include <stdio.h>
#include <stdlib.h>
void qusort(int s[],int start,int end) //自定义函数
{
int i,j;
i=start; //将每组首个元素赋给i
j=end; //将每组末尾元素赋给j
s[0]=s[start];
while(i<j&&s[0]<s[j])
{
while(i<j&&s[0]<s[j])
j--; //位置左移
if(i<j)
{
s[i]=s[j]; //将s[j]放到s[i]的位置上
i++; //位置右移
}
while(i<j&&s[i]<=s[0])
i++; //位置左移
if(i<j)
{
s[j]=s[i]; //将大于基准值的s[j]放到s[i]的位置
j--; //位置左移
}
}
s[i]=s[0]; //将基准值放入指定位置
if(start<i)
qusort(s,start,j-1); //对分割出的部分递归
if(i<end)
qusort(s,j+1,end);
}
int main()
{
int a[11],i;
printf("请输入10个整数:\n");
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
qusort(a,1,10);
printf("直接排序后的顺序:\n");
for(i=1;i<=10;i++)
printf("%5d",a[i]);
}
快速排序
Time:2017.2.28
Name:LQS
*/
#include <stdio.h>
#include <stdlib.h>
void qusort(int s[],int start,int end) //自定义函数
{
int i,j;
i=start; //将每组首个元素赋给i
j=end; //将每组末尾元素赋给j
s[0]=s[start];
while(i<j&&s[0]<s[j])
{
while(i<j&&s[0]<s[j])
j--; //位置左移
if(i<j)
{
s[i]=s[j]; //将s[j]放到s[i]的位置上
i++; //位置右移
}
while(i<j&&s[i]<=s[0])
i++; //位置左移
if(i<j)
{
s[j]=s[i]; //将大于基准值的s[j]放到s[i]的位置
j--; //位置左移
}
}
s[i]=s[0]; //将基准值放入指定位置
if(start<i)
qusort(s,start,j-1); //对分割出的部分递归
if(i<end)
qusort(s,j+1,end);
}
int main()
{
int a[11],i;
printf("请输入10个整数:\n");
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
qusort(a,1,10);
printf("直接排序后的顺序:\n");
for(i=1;i<=10;i++)
printf("%5d",a[i]);
}