//#define Custom_Sorting
/*
Åñëè Custom_Sorting íå îïðåäåëåíà, èñïîëüçóåòñÿ
âñòðîåíàÿ ôóíêöèÿ
ñîðòèðîâêè, â ïðîòèâíîì ñëó÷àå -
èñêóññòâåííàÿ
*/
#include "stdlib.h"
#include "iostream.h"
#include "memory.h"
// Ìàêñèìàëüíûé
ðàçìåð ìàññèâà
#define ARRAY_LENGTH 10
// Òèï ñîðòèðóåìûõ ýëåìåíòîâ
typedef int ElementType;
//
Ìàññèâ äëÿ ñîðòèðîâêè
ElementType Array[ARRAY_LENGTH];
// Ôóíêöèÿ ãåíåðàöèè ìàññèâà
void GenerateArray( ElementType* arr)
{
for( int i=0; i<ARRAY_LENGTH; i++)
{
arr[i] = rand();
}
}
// Ôóíêöèÿ ðàñïå÷àòêè ìàññèâà
void PrintArray( ElementType* arr)
{
if (ARRAY_LENGTH <= 0)
{
cout << "\n Empty array";
return;
}
cout << "\n Array: " << arr[0];
for( int i = 1; i < ARRAY_LENGTH; i++)
{
cout << " -> " << arr[i];
}
};
#ifdef Custom_Sorting
//
èñêóññòâåííàÿ ôóíêöèÿ ñîðòèðîâêè
void SortArray( ElementType* arr)
{
ElementType tmp_val;
for( int i = 0; i < ARRAY_LENGTH; i++)
for( int j = 0; j < ARRAY_LENGTH; j++)
{
if( arr[i] < arr[j])
{
tmp_val = arr[i];
arr[i] = arr[j];
arr[j] = tmp_val;
}
}
};
#else
//
âñòðîåííàÿ ôóíêöèÿ ñîðòèðîâêè
int CompareFunction( const void* E1, const void* E2)
{
ElementType Val1;
ElementType Val2;
memcpy( &Val1, E1, sizeof( ElementType));
memcpy( &Val2, E2, sizeof( ElementType));
if( Val1 < Val2)
{
return -1;
}else
{
return 1;
}
}
void SortArray( ElementType* arr)
{
qsort( arr, ARRAY_LENGTH, sizeof(ElementType), CompareFunction);
}
#endif
void main( void)
{
GenerateArray ( Array);
PrintArray( Array);
SortArray( Array);
PrintArray( Array);
}