python和C语言分别实现快速排序

python 部分:

代码
from  random  import  Random

def  quick_sort(arr):
    
if  len(arr)  >   1 :
        qsort(arr,0,len(arr)
- 1 )

def  qsort(arr,start,end):
    base 
=  arr[start]
    pl 
=  start  +   1
    pr 
=  end
    
while  True:
        
while  arr[pl]  >  base:
            pl 
+=   1
        
        
while  arr[pr]  <  base:
            pr 
-=   1
        
        
if  pl  >=  pr:
            
break ;
        
        arr[pl],arr[pr] 
=  arr[pr],arr[pl]
    arr[start] 
=  arr[pr]
    arr[pr] 
=  base
    
    
if (pr  -   1   >  start):
        qsort(arr,start,pr 
-   1 )
    
if (pl  +   1   <  end):
        qsort(arr,pr
+ 1 ,end)

=  Random()
=  []
for  i  in  range( 20 ):
    a.append(r.randint(0,
100 ))

print  a
quick_sort(a)
print  a

最后结果:

[20, 84, 4, 12, 48, 91, 71, 84, 44, 43, 78, 46, 26, 50, 51, 90, 40, 7, 93, 62]
[93, 91, 90, 84, 84, 78, 71, 62, 51, 50, 48, 46, 44, 43, 40, 26, 20, 12, 7, 4]

C部分:

代码
/*
 * =====================================================================================
 *
 *       Filename:  quickSort.cpp
 *
 *    Description:  quick Sort method
 *
 *        Version:  1.0
 *        Created:  11/25/2010 08:52:33 PM
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  Archy Yu 
 *        Company:  
 *
 * =====================================================================================
 
*/

#include
< stdio.h >

void  swap( int   & i, int   & j)
{
    
int  k  =  i;
    i 
=  j;
    j 
=  k;
}

int  Partition( int  a[ 3 ], int  left, int  right)
{
    
int  i  =  left;
    
int  j  =  right  +   1 ;
    
int  tem  =  a[i];
    
while ( true )
    {
        
while (a[ ++ i]  <  tem);
        
while (a[ -- j]  >  tem);

        
if (i  >=  j)
            
break ;

        swap(a[i],a[j]);
    }
    a[left] 
=  a[j];
    a[j] 
=  tem;
    
return  j;
}

void  QuickSort( int  a[ 3 ], int  left, int  right)
{
    
if (left  <  right)
    {
        
int  part  =  Partition(a,left,right);
        QuickSort(a,left,part
- 1 );
        QuickSort(a,part
+ 1 ,right);
    }
}

int  main()
{
    
int  b[ 3 =  { 9 , 7 , 8 };
    QuickSort(b,
0 , 3 );
    
for ( int  i = 0 ;i <= 2 ;i ++ )
    {
        printf(
" %d  " ,b[i]);
    }
    
return   0 ;
}

 

 

 

转载于:https://www.cnblogs.com/archy_yu/archive/2010/11/26/1888328.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值