其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
几个经典的排序算法

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

#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;     
}




相关文章

相关软件