Chinaunix首页 | 论坛 | 博客
  • 博客访问: 129062
  • 博文数量: 40
  • 博客积分: 2228
  • 博客等级: 大尉
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-12 11:48
文章分类

全部博文(40)

文章存档

2011年(11)

2010年(29)

我的朋友

分类: LINUX

2010-07-16 14:04:31

 

#include<string.h>
#include<stdio.h>
#include "cmp.h"

#define MAXLINES 5000
char *lineptr[MAXLINES];

int readlines(char *lineptr[],int nlines);
void writelines(char *lineptr[],int nlines);

void cqsort(void *lineptr[],int left ,int right,
     int (*cmp)(void *,void *));
int numcmp(char *, char *);

main(int argc,char *argv[])
{
    int nlines;
    int numeric=0;
    
    if(argc>1 && strcmp(argv[1],"-n")==0)
        numeric=1;
    if((nlines=readlines(lineptr,MAXLINES))>=0){
        cqsort((void **)lineptr,0,nlines-1,
        (int (*)(void*,void*))(numeric ? numcmp : strcmp));
        writelines(lineptr, nlines);
        return 0;
    } else {
        printf("input too big to sort\n");
        return 1;
    }
}

void cqsort(void *v[],int left,int right,
    int (*comp)(void *,void *))
{
    int i,last ;
    void swap( void *v[],int ,int);

    if(left>=right)
        return;
    swap(v,left,(left+right)/2);
    last=left;
    for(i=left+1;i<=right;i++)
        if((*comp)(v[i],v[left])<0)
            swap(v,++last,i);
    swap(v,left ,last);
    cqsort(v,left,last-1,comp);
    cqsort(v,last+1,right,comp);
}

#include<stdio.h>
#include<stdlib.h>

#define MAXLINES 5000

int getlines(char

阅读(1658) | 评论(0) | 转发(0) |
0

上一篇:查看linux 内核版本

下一篇:gcc 问题总结

给主人留下些什么吧!~~