手寫快排及心得
阿新 • • 發佈:2019-01-25
//遞迴法//
#include<stdio.h>
int quicksort(int a[],int left,int right)
{
int i,j,key;
if(left<right)
{
i=left,j=right,key=a[left];
while(i<j)
{
while(i<j&&a[j]>key) //後邊萬不可加分號//
j--;
if(i<j)
{
a[i]=a[j];
i++;
}
while(i<j&&a[i]<key)
i++;
if(i<j)
{
a[j]=a[i];
j--;
}
}
a[i]=key;
quicksort(a,left,i-1);
quicksort(a,i+1,right);
}
int main()
{
int a[5];
for(int i=0; i<5; i++)
{
scanf("%d",a+i);
}
int left=0,right=4;
quicksort(a,left,right);
for(int i=0; i<5; i++)
{
if(i)
printf(" ");
printf("\n");
return 0;
}
#include<stdio.h>
int quicksort(int a[],int left,int right)
{
int i,j,key;
if(left<right)
{
i=left,j=right,key=a[left];
while(i<j)
{
while(i<j&&a[j]>key) //後邊萬不可加分號//
j--;
if(i<j)
{
a[i]=a[j];
i++;
}
while(i<j&&a[i]<key)
i++;
if(i<j)
{
a[j]=a[i];
j--;
}
}
a[i]=key;
quicksort(a,left,i-1);
quicksort(a,i+1,right);
}
}
{
int a[5];
for(int i=0; i<5; i++)
{
scanf("%d",a+i);
}
int left=0,right=4;
quicksort(a,left,right);
for(int i=0; i<5; i++)
{
if(i)
printf(" ");
printf("%d",a[i]);
//等價於printf("%d",*(a+i));//
}printf("\n");
return 0;
}