19 #include "SortingTools.h"
22 int SortingTools::sortScalars(
int n,
double *y,
int *perm)
const {
37 if ((n > 0) && (perm != 0)) {
44 for (i = 0; i < n; ++i)
49 for (i=igap; i<n; ++i) {
50 for (j=i-igap; j>=0; j-=igap) {
51 if (y[j] > y[j+igap]) {
57 perm[j] = perm[j+igap];
74 int SortingTools::sortScalars_Vectors(
int num,
double *lambda,
double *Q,
int ldQ)
const {
86 if ((Q) && (ldQ > 0)) {
87 double *vec =
new double[ldQ];
90 for (i=igap; i < num; ++i) {
91 for (j=i-igap; j>=0; j-=igap) {
92 if (lambda[j] > lambda[j+igap]) {
94 lambda[j] = lambda[j+igap];
97 memcpy(vec, Q + j*ldQ, ldQ*
sizeof(
double));
98 memcpy(Q + j*ldQ, Q + (j+igap)*ldQ, ldQ*
sizeof(
double));
99 memcpy(Q + (j+igap)*ldQ, vec, ldQ*
sizeof(
double));
112 for (i=igap; i < num; ++i) {
113 for (j=i-igap; j>=0; j-=igap) {
114 if (lambda[j] > lambda[j+igap]) {
116 double tmp = lambda[j];
117 lambda[j] = lambda[j+igap];
118 lambda[j+igap] = tmp;