递归法快速排序(Quicksort) ,时间复杂度 O (nlogn) ,以下为C语言的一种代码:

#include <stdio.h>
#include <conio.h>

/*==============================================================*/

int qsort(int s[], int l, int r)
{
     int i,j,x;
     i=l;
     j=r;
     x=s[l];
     if (i<j)
     {
             while (i<j)
             {
                   while((i<j)&&(s[j]>=x))
                         j--;
                   if (i<j)
                         s[i++]=s[j];
                   while ((i<j)&&(s[i]<=x))
                         i++;
                   if (i<j)
                         s[j--]=s[i];
             } 
             s[i]=x;
     qsort(s,l,i-1);
     qsort(s,i+1,r);
     }          
     return 0;
}
<!-- wp:more -->
<!--more-->
<!-- /wp:more -->
/*=================================================================*/
int main()
{
    int k,str[100],n;
    printf("input n:\n");
    scanf("%d",&n);
    printf("input data:");
    for(k=1;k<=n;k++)
          scanf("%d",&str[k]);
    qsort(str,1,n);
    printf("\noutput:");
    for(k=1;k<=n;k++)
          printf("%d ",str[k]);
    printf("\n");
   /* system("pause");*/
    getch();
    return 0;
}
       
                        
             

Views: 68

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据