几个简单常用的算法

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

#include <stdio.h>

#include <stdlib.h>

int find( int array[], int size,int date ) /*一般查找法*/

{

int i;

if( size <= 0 )

return -1;

for( i = 0; i < size; ++i )

if( date == array[i] )

return i;

return -1;

}

void swap( int *pa, int *pb )/*交换*/

{

if( (pa == NULL) || (pb == NULL) )

return ;

int temp;

temp = *pa;

*pa = *pb;

*pb = temp;

}

void m_sort( int array[],int begin, int end )/*一般排序法*/

{

int i;

if( begin >= end )

return ;

for( i = begin + 1; i <= end; ++i )

if( array[ begin ] > array[i] )

swap( &array[ begin ], &array[i] );

m_sort( array, ++begin, end );

}

void q_sort( int array[],int begin, int end )/*快速排序法*/

{

int i, last;

if( begin >= end )

return ;

swap( &array[ begin ], &array[ (begin + end)/2 ]);

last = begin;

for( i = begin + 1; i <= end; ++i )

if( array[i] < array[ begin ] )

swap( &array[ ++last ], &array[i] );

swap( &array[ begin ], &array[ last ] );

q_sort( array, begin, last - 1 );

q_sort( array, last + 1, end );

}

int bifind( int array[], int size, int date )/*二分查找法*/

{

int begin, end, mid;

begin = 0;

end = size - 1;

while( begin <= end )

{

mid = (begin + end)/2;

if( date > array[ mid ] )

begin = mid + 1;

else if( date < array[ mid ] )

end = mid - 1;

else

return mid;

}

return -1;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航