Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4611336
  • 博文数量: 385
  • 博客积分: 21208
  • 博客等级: 上将
  • 技术积分: 4393
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-30 13:40
文章分类

全部博文(385)

文章存档

2015年(1)

2014年(3)

2012年(16)

2011年(42)

2010年(1)

2009年(2)

2008年(34)

2007年(188)

2006年(110)

分类: C/C++

2006-10-30 20:14:25

快速排序  时间复杂度 O(nlogn)
文件:quickSort.tar.gz
大小:1KB
下载:下载

//quick sort algrithom

#include <stdio.h>

int partition(int arr[],int len)
{
    int i, j, temp;
  
    i =0;
    j = len-1;

    temp = arr[i];

   while(i<j)
    {
        while (i<j && arr[j]>=temp) --j;
        arr[i] = arr[j];
        
        
        while (i<j && arr[i]<=temp) ++i;
        arr[j] = arr[i];
    
    }    
    arr[i] = temp;
    
     return i;
}

    
void Qsort (int arr[],int len)
{
    if (len>1)
    {
        int k=partition(arr,len);
        
         Qsort(&arr[0],k+1);
        
        Qsort(&arr[k+1],len-k-1);     
    }
 
    
}

void print(int *a,int N)
{
        int i;
        for (i=0;i<N; i++)
               printf("%d, ",a[i]);
        printf("\n");
}

int main()
{
    const int N=10;
     int value[N] = {18,94,61,87,34,31,78,56,14,17};
     
     printf("before Qsort is \n ");
     
        print(value,N);
     
     Qsort(value,N);
    
     printf("\nafter Qsort is \n ");

     print(value,N);
     
     return 0;

}





//quick sort algrithom

#include <stdio.h>


int partition(int arr[],int low,int high)
{
    int i, j, temp;
  
    i =low;
    j = high;

    temp = arr[low];

   while(i<j)
    {
        while (i<j && arr[j]>=temp) --j;
        arr[i] = arr[j];
        
        
        while (i<j && arr[i]<=temp) ++i;
        arr[j] = arr[i];
    
    }    
    arr[i] = temp;
    
     return i;
}

    
void Qsort (int arr[],int low, int high)
{
    if (low<high)
    {
         int k=partition(arr,low,high);
        
         Qsort(arr,0,k-1);
        
        Qsort(arr,k+1,high);     
    }
    
}
void print(int *a,int N)
{
        int i;
        for (i=0;i<N; i++)
               printf("%d, ",a[i]);
        printf("\n");
}

int main()
{
    const int N=10;
     int value[N] = {18,94,61,87,34,31,78,56,14,17};
   
    
     
     printf("before Qsort is \n ");
     
       print(value,N);
     
     Qsort(value,0,N-1);
    
     printf("\nafter Qsort is \n ");

     print(value,N);
     
     return 0;

}

阅读(4198) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-06-17 16:35:30

chinaunix网友2009-06-17 16:35:30

chinaunix网友2009-03-07 21:00:35

不错,partition函数加点注释更好

chinaunix网友2009-03-07 21:00:35

不错,partition函数加点注释更好