⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sort.cxx

📁 科学和工程计算中使用统计功能开发工具包.
💻 CXX
字号:
//$$ sort.cxx                            Sorting

// Copyright (C) 1991,2: R B Davies

#define WANT_MATH

#include "include.h"

#include "newmatap.h"


/******************************** Shell sort ********************************/

void SortAscending(GeneralMatrix& GM)
{
   // from numerical recipies in C - Shell sort
   Tracer et("Sort-ascending");

   const double aln2i = 1.442695022; const double tiny = 1.0e-5;
   Real* gm = GM.Store(); int n = GM.Storage(); int m = n;
   int lognb2 = (int)(aln2i * log((double)n) + tiny);
   while (lognb2--)
   {
      m >>= 1;
      for (int j = m; j<n; j++)
      {
         Real* gmj = gm+j; int i = j-m; Real* gmi = gmj-m; Real t = *gmj;
         while (i>=0 && *gmi>t)  { *gmj = *gmi; gmj = gmi; gmi -= m; i -= m; }
         *gmj = t;
      }
   }
}

void SortDescending(GeneralMatrix& GM)
{
   // from numerical recipies in C - Shell sort
   Tracer et("Sort-descending");

   const double aln2i = 1.442695022; const double tiny = 1.0e-5;
   Real* gm = GM.Store(); int n = GM.Storage(); int m = n;
   int lognb2 = (int)(aln2i * log((double)n) + tiny);
   while (lognb2--)
   {
      m >>= 1;
      for (int j = m; j<n; j++)
      {
         Real* gmj = gm+j; int i = j-m; Real* gmi = gmj-m; Real t = *gmj;
         while (i>=0 && *gmi<t)  { *gmj = *gmi; gmj = gmi; gmi -= m; i -= m; }
         *gmj = t;
      }
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -