Bladeren bron

0x001b6c48,sort,52,52,谢法钱,must

DESKTOP-AB9OQPJ\RED-10 3 jaren geleden
bovenliggende
commit
0ea35b28f6
1 gewijzigde bestanden met toevoegingen van 45 en 9 verwijderingen
  1. 45 9
      jni/Cubic.cpp

+ 45 - 9
jni/Cubic.cpp

@@ -1,14 +1,50 @@
 #include "Cubic.h"
 
-//001B683C
+#include <algorithm>
+// 001B683C
 int Cubic::degree() {
-  if (fabsf(list_0[0]) >= 0.000001 || fabsf(list_0[1]) >= 0.000001)
-    return 3;
-  if (fabsf(list_0[2]) >= 0.000001 || fabsf(list_0[3]) >= 0.000001)
-    return 2;
-  if (fabsf(list_0[4]) >= 0.000001 || fabsf(list_0[5]) >= 0.000001)
-    return 1;
-  if (fabsf(list_0[6]) >= 0.000001 || fabsf(list_0[7]) >= 0.000001)
-    return 0;
+  if (fabsf(list_0[0]) >= 0.000001 || fabsf(list_0[1]) >= 0.000001) return 3;
+  if (fabsf(list_0[2]) >= 0.000001 || fabsf(list_0[3]) >= 0.000001) return 2;
+  if (fabsf(list_0[4]) >= 0.000001 || fabsf(list_0[5]) >= 0.000001) return 1;
+  if (fabsf(list_0[6]) >= 0.000001 || fabsf(list_0[7]) >= 0.000001) return 0;
   return -1;
+}
+
+// 001b6c48
+void sort(cFloat* pf0, int r1_count) {
+  // loc_1B6C58
+  for (int i_r2 = 0; i_r2 < 3; i_r2++) {  // loc_1B6C58
+
+    if (fabs(pf0[i_r2].field_4) >= 1.0e-6f || i_r2 >= r1_count ||
+        pf0[i_r2].field_0 < 0) {  // loc_1B6C80
+      pf0[i_r2].field_0 = 1000.0f;
+      pf0[i_r2].field_4 = 0;
+    }
+    // loc_1B6C88
+  }
+  // 001B6C8E
+  //优化后的冒泡
+  for (int i_lr = 0; i_lr < r1_count; i_lr++) {  //.text:001B6C98
+    int d_r12 = 0;
+    int r3_i=0;
+    cFloat*r4_pf=pf0+r3_i;
+    
+    while(r3_i<r1_count - 1){
+      if(r4_pf->field_0>(r4_pf+1)->field_0){
+        //001B6CC2
+        cFloat r4r12_cfloat=*r4_pf;
+        *r4_pf=*(r4_pf+1);
+        *(r4_pf+1)=r4r12_cfloat;
+        r4_pf=pf0+r3_i+1;
+        d_r12=1;
+      }else
+      {
+        r3_i++;
+      }
+    }
+    // loc_1B6CDA
+    if (!(d_r12)) break;
+  }
+
+  // locret_1B6CE4
 }