程序员实用算法摘抄-冒泡法-C

摘抄自 《程序员实用算法》

/*-----bubble.c--------
*bubble sort an array
*#define DRIVER to compile a test driver
*Driver must be linked to sortsub.c
*_______________*/
#include "sorthdr.h"
#define DRIVER 1 
void BubbleSort ( Element **Array,int N, CompFunc Compare)
{
int limit;
/* make steasdily shorter passes...*/
for (limit = N-1 ;limit>0; limit--)
{
int j,swapped;
/* on each pass,sweep largest element to end of arrey*/
swapped=0;
for ( j=0;j<limit;j++)
{
if (Compare(Array[j],Array[j+1])>0)
{
Element *temp;
temp=Array[j];
Array[j]=Array [j+1];
Array[j+1]=temp;
swapped=1;
}
}

if (!swapped )

    break; /* if no swaps,we have finished */
}
}
#ifdef DRIVER
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sortsub.h"
/*
*A comparison function
*/
int Cfunc( Element *L ,Element *R)
{
return (strcmp (L->text,R->text,5));
}
void main ( int argc,char *argv[])
{
Element **Array;
int Items = 2000;
if ( argc !=2 && argc !=3) 
{
    fprintf ( stderr ," Usage:bubble infile {maxtems}\n");
    return;
}
if (arqc==3 )
    Items = atoi ( argv [2] );
 if ( ( Items = LoadArray ( argv [1] , Items, &Array ))== -1)
     return; /* couldn't load file */
 BubbleSort ( Array,Items,( CompFunc) Cfunc);
 ShowArray ( Array, Items , ( CompFunc) Cfunc );
}
#endif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值