#include "stdio.h"
#define MAXSIZE 20
int G[MAXSIZE];
void quicksort( int left,int right)/*n就是需要排序的数组,left和right是需要排序的左界和右界*/
{
int dp;
if (left < right)
{
dp=partition(left,right);/*partition函数,就是把所有小于pivot的数放到它的左边,
大的放在右边,然后返回pivot在整理过的数组中的位置。*/
quicksort(left,dp-1);
quicksort(dp,right);/*这两个就是递归调用,分别整理pivot左边的数组和右边的数组*/
}
}
/*partition函数,就是把所有小于pivot的数放到它的左边,
大的放在右边,然后返回pivot在整理过的数组中的位置。*/
int partition(int left,int right)
{
int pivot,t,k;
k=left;
pivot=G[left]; /*get the leftest element*/
do
{
t = G[left];/*swap*/
G[left] = G[right];
G[right]=t;
while(G[left] < pivot)
left ++;
while(G[right] >= pivot)
right --;
}
while(left <= right);
if(k==left) left++;
return left;
}
main()
{
int n;
int i;
int l;
int r;
printf("Plesae input the number you want to sort:\n");
scanf("%d",&n);
printf("Plesae input the value of the %d number:\n", n);
for(i=1;i<=n;i++)
scanf("%d",&G[i]);
l=1;
r=n;
quicksort(l,r);
printf("Sorted:\n");
for(i=1;i<=n;i++)
printf("%d\t",G[i]);
getch();
}
评论0