Rev 976 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 976 | Rev 984 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | void Sort_by_Size(int a, b) // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1 |
3 | void Sort_by_Size(int a, b) // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1 |
4 | { |
4 | { |
5 | int i= a; |
5 | int i= a; |
6 | IF (a >= b) return; |
6 | IF (a >= b) return; |
7 | FOR (j = a; j <= b; j++) |
7 | FOR (j = a; j <= b; j++) |
8 | { |
- | |
9 | IF (ESDWORD[file_mas[j]*304 + buf+72-8] <= ESDWORD[file_mas[b]*304 + buf+72-8]) |
8 | IF (ESDWORD[file_mas[j]*304 + buf+64] <= ESDWORD[file_mas[b]*304 + buf+64]) |
10 | { file_mas[i] >< file_mas[j]; i++;} |
9 | { file_mas[i] >< file_mas[j]; i++;} |
11 | } |
- | |
12 | Sort_by_Size (a, i-2); |
10 | Sort_by_Size (a, i-2); |
13 | Sort_by_Size (i, b); |
11 | Sort_by_Size (i, b); |
14 | } |
12 | } |
Line 23... | Line 21... | ||
23 | Sort_by_Name(a, i-2); |
21 | Sort_by_Name(a, i-2); |
24 | Sort_by_Name(i, b); |
22 | Sort_by_Name(i, b); |
25 | } |
23 | } |
Line 26... | Line -... | ||
26 | - | ||
27 | - | ||
28 | /*int partition1(dword a, b) |
- | |
29 | { |
- | |
30 | dword i = a; byte filename1[256], filename2[256]; int n; |
- | |
31 | for (j = a; j <= b; j++) |
- | |
32 | { |
- | |
33 | // |
- | |
34 | copystr(file_mas[j]*304 + buf+72, #filename1); |
- | |
35 | copystr(file_mas[b]*304 + buf+72, #filename2); |
- | |
36 | n=strlen(#filename1)-1; |
- | |
37 | WHILE (filename1[n]<>'.') && (n>0) n--; |
- | |
38 | IF (n) copystr(#filename1+n+1, #filename1); |
- | |
39 | n=strlen(#filename2)-1; |
- | |
40 | WHILE (filename2[n]<>'.') && (n>0) n--; |
- | |
41 | IF (n) copystr(#filename2+n+1, #filename2); |
- | |
42 | // |
- | |
43 | n=strcmp(#filename1, #filename2); |
24 | |
44 | IF (n<0) { file_mas[i] >< file_mas[j]; i++;} |
- | |
45 | IF (n==0) && (strcmp(file_mas[j]*304 + buf+72, file_mas[b]*304 + buf+72)<=0) { file_mas[i] >< file_mas[j]; i++;} |
- | |
46 | } |
- | |
47 | EAX = i-1; |
- | |
48 | }*/ |
- | |
49 | 25 | ||
50 | int partition1(dword a, b) |
26 | void Sort_by_Type(int a, b) // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1 |
51 | { |
27 | { |
52 | dword i = a; byte filename1[256], filename2[256]; int n; |
28 | int i=a; dword offset=buf+72; byte filename1[256], filename2[256]; int n; |
53 | dword offset=buf+72; |
29 | IF (a >= b) return; |
54 | for (j = a; j <= b; j++) |
30 | for (j = a; j <= b; j++) |
55 | { |
31 | { |
56 | // |
32 | // |
Line 65... | Line 41... | ||
65 | // |
41 | // |
66 | n=strcmp(#filename1, #filename2); |
42 | n=strcmp(#filename1, #filename2); |
67 | IF (n<0) { file_mas[i] >< file_mas[j]; i++;} |
43 | IF (n<0) { file_mas[i] >< file_mas[j]; i++;} |
68 | IF (n==0) && (strcmp(file_mas[j]*304 + offset, file_mas[b]*304 + offset)<=0) { file_mas[i] >< file_mas[j]; i++;} |
44 | IF (n==0) && (strcmp(file_mas[j]*304 + offset, file_mas[b]*304 + offset)<=0) { file_mas[i] >< file_mas[j]; i++;} |
69 | } |
45 | } |
70 | EAX = i-1; |
46 | Sort_by_Type(a, i-2); |
- | 47 | Sort_by_Type(i, b); |
|
71 | } |
48 | }>=0)>>0)>>>=>ýëåìåíòîâ>>=0)>=>ýëåìåíòîâ>>=>=>ýëåìåíòîâ> |
Line 72... | Line -... | ||
72 | - | ||
73 | void Sort_by_Type(dword a, b) // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1 |
- | |
74 | { |
- | |
75 | int c; |
- | |
76 | IF (a >= b) RETURN; |
- | |
77 | c = partition1(a, b); |
- | |
78 | Sort_by_Type(a, c-1); |
- | |
79 | Sort_by_Type(c+1, b); |
- |