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

📄 shaker_sort.c

📁 GA/KNN 算法源码啊啊啊啊啊啊啊啊啊啊啊啊
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#include "ga_knn.h"/*--------------------------------------------------------*//*       modified bubble sort in ascending order          *//* from Advanced C, Herbert Schild, McGraw-Hill, page 28. *//*--------------------------------------------------------*/void shaker_sort_ascen(Neighbor *x,int size,int knn) {   register int a,b,c,d,t2;   double t1;   c = 1;   b = size-1; d = size-1;   do {      for (a = d; a >=c; --a) {         if (x[a-1].dis > x[a].dis) {            t1 = x[a-1].dis;            x[a-1].dis = x[a].dis;            x[a].dis = t1;            t2 = x[a-1].id;            x[a-1].id = x[a].id;            x[a].id = t2;            b = a;         }      }      c = b+1;      for (a = c; a < d+1; ++a) {         if (x[a-1].dis > x[a].dis) {            t1 = x[a-1].dis;            x[a-1].dis = x[a].dis;            x[a].dis = t1;            t2 = x[a-1].id;            x[a-1].id = x[a].id;            x[a].id = t2;            b=a;         }      }      d = b-1;      /*-----------------------------*/      /* this breaks the loop in the */      /* worst case scenario.        */      /*-----------------------------*/      if (c > d) break;   } while (c <=knn);}/*---------- descending order ----------*/void shaker_double(double *x,int size,int k) {   register int a,b,c,d;   double t1;   c = 1;   b = size-1; d = size-1;   do {      for (a = d; a >=c; --a) {         if (x[a-1] < x[a]) {            t1 = x[a];            x[a] = x[a-1];            x[a-1] = t1;            b = a;         }      }      c = b+1;      for (a = c; a < d+1; ++a) {         if (x[a] > x[a-1]) {            t1 = x[a];            x[a] = x[a-1];            x[a-1] = t1;            b=a;         }      }      d = b-1;      if (c > d) break;   } while (c <=k);}void shaker_int_descend(int *x,int size) {   register int a,b,c,d,t1;   c = 1;   b = size-1; d = size-1;   do {      for (a = d; a >=c; --a) {         if (x[a-1] < x[a]) {            t1 = x[a];            x[a] = x[a-1];            x[a-1] = t1;            b = a;         }      }      c = b+1;      for (a = c; a < d+1; ++a) {         if (x[a] > x[a-1]) {            t1 = x[a];            x[a] = x[a-1];            x[a-1] = t1;            b=a;         }      }      d = b-1;   } while (c <=d);}void shaker_int_ascend(int *x,int count) {   register int a,b,c,d;   int t;   c = 1;   b = count-1; d = count-1;   do {      for (a = d; a >=c; --a) {         if (x[a-1]>x[a]) {            t = x[a-1];            x[a-1] = x[a];            x[a] = t;            b = a;         }      }      c = b+1;      for (a = c; a < d+1; ++a) {         if (x[a-1]>x[a]) {            t = x[a-1];            x[a-1] = x[a];            x[a] = t;            b=a;         }      }      d = b-1;      if (c > d) break;   } while (c <=count);}void shaker_double_ascent(double *x,int count) {   register int a,b,c,d;   double t;   c = 1;   b = count-1; d = count-1;   do {      for (a = d; a >=c; --a) {         if (x[a-1]>x[a]) {            t = x[a-1];            x[a-1] = x[a];            x[a] = t;            b = a;         }      }      c = b+1;      for (a = c; a < d+1; ++a) {         if (x[a-1]>x[a]) {            t = x[a-1];            x[a-1] = x[a];            x[a] = t;            b=a;         }      }      d = b-1;   } while (c <=d);}

⌨️ 快捷键说明

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