quicksort
This commit is contained in:
parent
3b1db93d74
commit
45e804a350
7 changed files with 118 additions and 14 deletions
16
record.h
16
record.h
|
|
@ -1,5 +1,6 @@
|
|||
#pragma once
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef struct {
|
||||
int a[5];
|
||||
|
|
@ -21,21 +22,24 @@ static inline int compare_records(const void* a, const void* b)
|
|||
{
|
||||
const record* ra = (const record*)a;
|
||||
const record* rb = (const record*)b;
|
||||
const int ga = g(ra);
|
||||
const int gb = g(rb);
|
||||
return (ga > gb) - (ga < gb);
|
||||
int ga = g(ra);
|
||||
int gb = g(rb);
|
||||
int result = (ga > gb) - (ga < gb);
|
||||
return result;
|
||||
}
|
||||
|
||||
static inline void print_record(FILE* stream, const record* out)
|
||||
{
|
||||
fprintf(stream, "[%d %d %d %d %d] x=%d, g=%d",
|
||||
out->a[0], out->a[1], out->a[2], out->a[3], out->a[4], out->x, g(out));
|
||||
fprintf(stream, "%d %d %d %d %d %d",
|
||||
out->a[0], out->a[1], out->a[2], out->a[3], out->a[4], out->x);
|
||||
}
|
||||
|
||||
static inline int read_record(FILE* stream, record* out)
|
||||
{
|
||||
int result = fscanf(stream, "%d %d %d %d %d %d", &out->a[0], &out->a[1], &out->a[2], &out->a[3], &out->a[4], &out->x);
|
||||
record tmp;
|
||||
int result = fscanf(stream, "%d %d %d %d %d %d", &tmp.a[0], &tmp.a[1], &tmp.a[2], &tmp.a[3], &tmp.a[4], &tmp.x);
|
||||
if (result == 6) {
|
||||
*out = tmp;
|
||||
return 0;
|
||||
}
|
||||
if (result == EOF) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue