SPRAAK
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Functions
sort.c File Reference

Sorting an array of elements using the quicksort algorithm. More...

Functions

float * spr_sort_find_Nmax_f32 (float *dst, float *src, int size, int N)
 
float * spr_sort_find_Nmin_f32 (float *dst, float *src, int size, int N)
 
void spr_sort_down_f32 (float *restrict data, int size)
 
float * spr_sort_down2_f32 (float *restrict dst, const float *src, int size)
 
void spr_sort_up_f32 (float *restrict data, int size)
 
float * spr_sort_up2_f32 (float *restrict dst, const float *src, int size)
 
int32_t * spr_sort_set_ndx_x32 (int32_t *restrict index, int size)
 
float * spr_sort_find_Nmax_f32_x32 (float *dst, int32_t *dst_ndx, float *src, int32_t *src_ndx, int size, int N)
 
float * spr_sort_find_Nmin_f32_x32 (float *dst, int32_t *dst_ndx, float *src, int32_t *src_ndx, int size, int N)
 
void spr_sort_down_f32_x32 (float *restrict data, int size, int32_t *restrict index)
 
float * spr_sort_down2_f32_x32 (float *restrict dst, const float *src, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
float * spr_sort_down3_f32_x32 (float *restrict data, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
void spr_sort_up_f32_x32 (float *restrict data, int size, int32_t *restrict index)
 
float * spr_sort_up2_f32_x32 (float *restrict dst, const float *src, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
float * spr_sort_up3_f32_x32 (float *restrict data, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
int64_t * spr_sort_set_ndx_x64 (int64_t *restrict index, int size)
 
float * spr_sort_find_Nmax_f32_x64 (float *dst, int64_t *dst_ndx, float *src, int64_t *src_ndx, int size, int N)
 
float * spr_sort_find_Nmin_f32_x64 (float *dst, int64_t *dst_ndx, float *src, int64_t *src_ndx, int size, int N)
 
void spr_sort_down_f32_x64 (float *restrict data, int size, int64_t *restrict index)
 
float * spr_sort_down2_f32_x64 (float *restrict dst, const float *src, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
float * spr_sort_down3_f32_x64 (float *restrict data, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
void spr_sort_up_f32_x64 (float *restrict data, int size, int64_t *restrict index)
 
float * spr_sort_up2_f32_x64 (float *restrict dst, const float *src, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
float * spr_sort_up3_f32_x64 (float *restrict data, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
double * spr_sort_find_Nmax_f64 (double *dst, double *src, int size, int N)
 
double * spr_sort_find_Nmin_f64 (double *dst, double *src, int size, int N)
 
void spr_sort_down_f64 (double *restrict data, int size)
 
double * spr_sort_down2_f64 (double *restrict dst, const double *src, int size)
 
void spr_sort_up_f64 (double *restrict data, int size)
 
double * spr_sort_up2_f64 (double *restrict dst, const double *src, int size)
 
double * spr_sort_find_Nmax_f64_x32 (double *dst, int32_t *dst_ndx, double *src, int32_t *src_ndx, int size, int N)
 
double * spr_sort_find_Nmin_f64_x32 (double *dst, int32_t *dst_ndx, double *src, int32_t *src_ndx, int size, int N)
 
void spr_sort_down_f64_x32 (double *restrict data, int size, int32_t *restrict index)
 
double * spr_sort_down2_f64_x32 (double *restrict dst, const double *src, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
double * spr_sort_down3_f64_x32 (double *restrict data, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
void spr_sort_up_f64_x32 (double *restrict data, int size, int32_t *restrict index)
 
double * spr_sort_up2_f64_x32 (double *restrict dst, const double *src, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
double * spr_sort_up3_f64_x32 (double *restrict data, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
double * spr_sort_find_Nmax_f64_x64 (double *dst, int64_t *dst_ndx, double *src, int64_t *src_ndx, int size, int N)
 
double * spr_sort_find_Nmin_f64_x64 (double *dst, int64_t *dst_ndx, double *src, int64_t *src_ndx, int size, int N)
 
void spr_sort_down_f64_x64 (double *restrict data, int size, int64_t *restrict index)
 
double * spr_sort_down2_f64_x64 (double *restrict dst, const double *src, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
double * spr_sort_down3_f64_x64 (double *restrict data, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
void spr_sort_up_f64_x64 (double *restrict data, int size, int64_t *restrict index)
 
double * spr_sort_up2_f64_x64 (double *restrict dst, const double *src, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
double * spr_sort_up3_f64_x64 (double *restrict data, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
int32_t * spr_sort_find_Nmax_i32 (int32_t *dst, int32_t *src, int size, int N)
 
int32_t * spr_sort_find_Nmin_i32 (int32_t *dst, int32_t *src, int size, int N)
 
void spr_sort_down_i32 (int32_t *restrict data, int size)
 
int32_t * spr_sort_down2_i32 (int32_t *restrict dst, const int32_t *src, int size)
 
void spr_sort_up_i32 (int32_t *restrict data, int size)
 
int32_t * spr_sort_up2_i32 (int32_t *restrict dst, const int32_t *src, int size)
 
int32_t * spr_sort_find_Nmax_i32_x32 (int32_t *dst, int32_t *dst_ndx, int32_t *src, int32_t *src_ndx, int size, int N)
 
int32_t * spr_sort_find_Nmin_i32_x32 (int32_t *dst, int32_t *dst_ndx, int32_t *src, int32_t *src_ndx, int size, int N)
 
void spr_sort_down_i32_x32 (int32_t *restrict data, int size, int32_t *restrict index)
 
int32_t * spr_sort_down2_i32_x32 (int32_t *restrict dst, const int32_t *src, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
int32_t * spr_sort_down3_i32_x32 (int32_t *restrict data, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
void spr_sort_up_i32_x32 (int32_t *restrict data, int size, int32_t *restrict index)
 
int32_t * spr_sort_up2_i32_x32 (int32_t *restrict dst, const int32_t *src, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
int32_t * spr_sort_up3_i32_x32 (int32_t *restrict data, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
int32_t * spr_sort_find_Nmax_i32_x64 (int32_t *dst, int64_t *dst_ndx, int32_t *src, int64_t *src_ndx, int size, int N)
 
int32_t * spr_sort_find_Nmin_i32_x64 (int32_t *dst, int64_t *dst_ndx, int32_t *src, int64_t *src_ndx, int size, int N)
 
void spr_sort_down_i32_x64 (int32_t *restrict data, int size, int64_t *restrict index)
 
int32_t * spr_sort_down2_i32_x64 (int32_t *restrict dst, const int32_t *src, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
int32_t * spr_sort_down3_i32_x64 (int32_t *restrict data, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
void spr_sort_up_i32_x64 (int32_t *restrict data, int size, int64_t *restrict index)
 
int32_t * spr_sort_up2_i32_x64 (int32_t *restrict dst, const int32_t *src, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
int32_t * spr_sort_up3_i32_x64 (int32_t *restrict data, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
int64_t * spr_sort_find_Nmax_i64 (int64_t *dst, int64_t *src, int size, int N)
 
int64_t * spr_sort_find_Nmin_i64 (int64_t *dst, int64_t *src, int size, int N)
 
void spr_sort_down_i64 (int64_t *restrict data, int size)
 
int64_t * spr_sort_down2_i64 (int64_t *restrict dst, const int64_t *src, int size)
 
void spr_sort_up_i64 (int64_t *restrict data, int size)
 
int64_t * spr_sort_up2_i64 (int64_t *restrict dst, const int64_t *src, int size)
 
int64_t * spr_sort_find_Nmax_i64_x32 (int64_t *dst, int32_t *dst_ndx, int64_t *src, int32_t *src_ndx, int size, int N)
 
int64_t * spr_sort_find_Nmin_i64_x32 (int64_t *dst, int32_t *dst_ndx, int64_t *src, int32_t *src_ndx, int size, int N)
 
void spr_sort_down_i64_x32 (int64_t *restrict data, int size, int32_t *restrict index)
 
int64_t * spr_sort_down2_i64_x32 (int64_t *restrict dst, const int64_t *src, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
int64_t * spr_sort_down3_i64_x32 (int64_t *restrict data, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
void spr_sort_up_i64_x32 (int64_t *restrict data, int size, int32_t *restrict index)
 
int64_t * spr_sort_up2_i64_x32 (int64_t *restrict dst, const int64_t *src, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
int64_t * spr_sort_up3_i64_x32 (int64_t *restrict data, int size, int32_t *restrict dst_ndx, const int32_t *src_ndx)
 
int64_t * spr_sort_find_Nmax_i64_x64 (int64_t *dst, int64_t *dst_ndx, int64_t *src, int64_t *src_ndx, int size, int N)
 
int64_t * spr_sort_find_Nmin_i64_x64 (int64_t *dst, int64_t *dst_ndx, int64_t *src, int64_t *src_ndx, int size, int N)
 
void spr_sort_down_i64_x64 (int64_t *restrict data, int size, int64_t *restrict index)
 
int64_t * spr_sort_down2_i64_x64 (int64_t *restrict dst, const int64_t *src, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
int64_t * spr_sort_down3_i64_x64 (int64_t *restrict data, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
void spr_sort_up_i64_x64 (int64_t *restrict data, int size, int64_t *restrict index)
 
int64_t * spr_sort_up2_i64_x64 (int64_t *restrict dst, const int64_t *src, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
int64_t * spr_sort_up3_i64_x64 (int64_t *restrict data, int size, int64_t *restrict dst_ndx, const int64_t *src_ndx)
 
float * spr_sort_quicksort (float *input, const int inputlength, int *index_in, float *output, const int outputlength, int **index_out, const char *options)
 

Detailed Description

Sorting an array of elements using the quicksort algorithm.

Date
10 April 1994
Author
Kris Demuynck
Revision History:
Oct 1994 - KD
Using median instead of mean should avoid the problems with Inf's and Nan's. Added heap based procedures to select the top_n best values in a large row.
Nov 2002 - KD
Modified the algorithms somewhat for additional speed (better median values).