#include "order.h"

This page has information from files order.h and order.c.

Contents


Public Routines in File order.c

Index

compare_vecscopy_vecmerge_sortmerge_sort_recurse

Details


Ordertype compare_vecs(int *a, int *b, int n);

void copy_vec(int *a, int *b, int n);

void merge_sort(void *a[],   /* array to sort */
		int n,       /* size of array */
		Ordertype (*comp_proc) (void *, void *));
This is a general-purpose sorting routine. You give it an array of pointers to sort, the size of the array, and a comparison function.

Here is an example of how to use it.

  {
    Term args[MAX_ACM_ARGS];
    int n;

    < set n and put the n terms you wish to sort into args[] >

    merge_sort((void **) args, n, (Ordertype (*)(void*,void*)) term_compare_ncv);

    < args[] is now ordered by term_compare_ncv() >
  }

void merge_sort_recurse(void *a[],    /* array to sort */
			void *w[],    /* work array */
			int start,    /* index of first element */
			int end,      /* index of last element */
			Ordertype (*comp_proc) (void *, void *));
This is the recursive part of a general-purpose merge sort. You won't ordinarily call this (use merge_sort instead). Use this only if you manage allocation of the work array.

Here is an example of how to use it.

  {
    Term args[MAX_ACM_ARGS], work[MAX_ACM_ARGS];
    int n;

    < put the n terms you wish to sort into args[] >

    merge_sort_recurse((void **) args, (void **) work, 0, n-1,
               (Ordertype (*)(void*,void*)) term_compare_ncv);

    < args[] is now ordered by term_compare_ncv() >
  }

Public Definitions in File order.h

/* basic order relations */

typedef enum { NOT_COMPARABLE,
	       SAME_AS,
	       LESS_THAN,
	       GREATER_THAN,
	       LESS_THAN_OR_SAME_AS,
	       GREATER_THAN_OR_SAME_AS,
	       NOT_LESS_THAN,
	       NOT_GREATER_THAN
             } Ordertype;


Introduction

This package defines Ordertype and has a generic sorting routine merge_sort() that can be used to sort any kind of data.