3. void bubblesort(unsigned long nel, int (*compare)(unsigned long i, unsigned long j), void (*swap)(unsigned long i, unsigned long j)) { if (nel==2) { if (compare(0,1)==1) { swap(0,1); } } else { int nachalo=0; int konec=nel-2; int ind=0; while (konec >= nachalo) { for (int i = nachalo; i < konec + 1; i++) { if (compare(i, i + 1) == 1) { swap(i, i + 1); ind = i; } } konec = ind-1; for (int i = konec; i >nachalo-1; i--) { if (compare(i, i+1) == 1) { swap(i + 1, i); ind = i; } } nachalo = ind+1; } } } _____________________________________ 4. void shellsort(unsigned long nel, int (*compare)(unsigned long i, unsigned long j), void (*swap)(unsigned long i, unsigned long j)) { int a[8]; // массив с числами фибоначи a[0]=1; a[1]=2; for (int i=2;i<=8;i++) { a[i]=a[i-2]+a[i-1]; } int d=0; while (nel>a[d]) { d++; } d=d-1; //номер наибольшего числа фибоначи for (int i=d;i>=0;i--) { for (int j=a[i];j=0) && (p-a[i]>=0)) { if (compare(p-a[i],p)==1) { swap(p, p - a[i]); } else { break; } p=p-a[i]; } } } } } _______________________________ 9. #include #include #include static int charcmp(const void *a, const void *b) { return (*((char*)a) > *((char*)b)); } int main() { char s[1000000]; gets(s); qsort(s, strlen(s), sizeof(*s), charcmp); printf("%s", s); //free(s); return; } __________________________________- 14. #include #include int main(int argc, char ** argv ) { int dlinas1, dlinas2; dlinas1=strlen(argv[1]); dlinas2=strlen(argv[2]); char s1[dlinas1]; strcpy(s1,argv[1]); char s2[dlinas2]; strcpy(s2,argv[2]); int max; int flag; if (dlinas1>dlinas2) { max=dlinas1; flag=1; } else { max=dlinas2; flag=2; } int i=0; while ((s1[i]==s2[i]) && (i