几个简单常用的算法
2004-08-29 18:28
405 查看
#include
#include
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;??? ?
}
#include
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;??? ?
}
相关文章推荐
- 关于字符串的用法和转换补遗
- 新手上路
- 你好
- 数学建模实录(2)
- 数学建模实录(2)
- 信息安全之路
- 汤母猫5数据库连接池 + JavaBean + 分页技术 + JDBC3.0
- 终于知道怎么做物体的阴影了!
- 代码模板的使用
- JSP学习笔记(九)-----JSP标签库
- 有朋自远方来
- 今天MBA报到注册
- GDM 和 Upgrade
- GDM 和 Upgrade
- JSP学习笔记(八)-----include的运用
- JSP学习笔记(七)-----猜数字游戏
- JSP学习笔记(六)-----在多个JSP页面之间传递参数
- OpenSSH缺陷允许攻击者远程利用/非法执行任意代码
- JSP学习笔记(五)-----JSP中使用JavaBean
- UNIX入侵过程(3)