Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.47 KB | None | 0 0
  1. 3.
  2.  
  3. void bubblesort(unsigned long nel,
  4. int (*compare)(unsigned long i, unsigned long j),
  5. void (*swap)(unsigned long i, unsigned long j)) {
  6.  
  7.  
  8. if (nel==2) {
  9. if (compare(0,1)==1) {
  10. swap(0,1);
  11. }
  12. } else {
  13. int nachalo=0;
  14. int konec=nel-2;
  15. int ind=0;
  16. while (konec >= nachalo) {
  17. for (int i = nachalo; i < konec + 1; i++) {
  18. if (compare(i, i + 1) == 1) {
  19. swap(i, i + 1);
  20. ind = i;
  21. }
  22. }
  23. konec = ind-1;
  24. for (int i = konec; i >nachalo-1; i--) {
  25. if (compare(i, i+1) == 1) {
  26. swap(i + 1, i);
  27. ind = i;
  28. }
  29. }
  30. nachalo = ind+1;
  31. }
  32. }
  33. }
  34.  
  35. _____________________________________
  36. 4.
  37.  
  38. void shellsort(unsigned long nel,
  39. int (*compare)(unsigned long i, unsigned long j),
  40. void (*swap)(unsigned long i, unsigned long j))
  41. {
  42.  
  43. int a[8]; // массив с числами фибоначи
  44. a[0]=1;
  45. a[1]=2;
  46. for (int i=2;i<=8;i++) {
  47. a[i]=a[i-2]+a[i-1];
  48. }
  49. int d=0;
  50. while (nel>a[d]) {
  51. d++;
  52. }
  53. d=d-1; //номер наибольшего числа фибоначи
  54.  
  55. for (int i=d;i>=0;i--) {
  56. for (int j=a[i];j<nel;j++) {
  57. if (compare(j-a[i],j)==1) {
  58. swap(j-a[i],j);
  59. int p=j-a[i];
  60. while ((p>=0) && (p-a[i]>=0)) {
  61. if (compare(p-a[i],p)==1) {
  62. swap(p, p - a[i]);
  63. } else {
  64. break;
  65. }
  66. p=p-a[i];
  67. }
  68. }
  69. }
  70. }
  71.  
  72. }
  73.  
  74. _______________________________
  75. 9.
  76.  
  77. #include<stdio.h>
  78. #include<stdlib.h>
  79. #include<string.h>
  80.  
  81. static int charcmp(const void *a, const void *b) {
  82. return (*((char*)a) > *((char*)b));
  83. }
  84. int main() {
  85.  
  86. char s[1000000];
  87. gets(s);
  88. qsort(s, strlen(s), sizeof(*s), charcmp);
  89.  
  90. printf("%s", s);
  91. //free(s);
  92. return;
  93. }
  94.  
  95.  
  96. __________________________________-
  97. 14.
  98.  
  99.  
  100. #include <stdio.h>
  101. #include <string.h>
  102.  
  103. int main(int argc, char ** argv ) {
  104. int dlinas1, dlinas2;
  105. dlinas1=strlen(argv[1]);
  106. dlinas2=strlen(argv[2]);
  107. char s1[dlinas1];
  108. strcpy(s1,argv[1]);
  109. char s2[dlinas2];
  110. strcpy(s2,argv[2]);
  111. int max;
  112. int flag;
  113. if (dlinas1>dlinas2) {
  114. max=dlinas1;
  115. flag=1;
  116. } else {
  117. max=dlinas2;
  118. flag=2;
  119. }
  120. int i=0;
  121. while ((s1[i]==s2[i]) && (i<max)) {
  122. i++;
  123. }
  124. i--;
  125. if ((dlinas1==dlinas2) && (i+1==max)) {
  126. printf("yes");
  127. return 0;
  128. }
  129. if (i==-1) {
  130. printf("no");
  131. return 0;
  132. }
  133. int j=0;
  134. while (s1[i]==s2[j]) {
  135. j++;
  136. }
  137. if (s1[i+1]==s2[j]) {
  138. printf("yes");
  139. return 0;
  140. }
  141. if ((i+1==dlinas1) && (flag==2)) {
  142. for (int j=0;j<max;j++) {
  143. if (s1[i]!=s2[j]) {
  144. printf("no");
  145. return 0;
  146. }
  147. }
  148. }
  149. if ((i+1==dlinas2) && ((flag==1) || (dlinas1==dlinas2))) {
  150. for (int j=0;j<max;j++) {
  151. if (s1[j]!=s2[i]) {
  152. printf("no");
  153. return 0;
  154. }
  155. }
  156. }
  157. printf("yes");
  158. return 0;
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement