Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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<nel;j++) {
- if (compare(j-a[i],j)==1) {
- swap(j-a[i],j);
- int p=j-a[i];
- while ((p>=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<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- 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 <stdio.h>
- #include <string.h>
- 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<max)) {
- i++;
- }
- i--;
- if ((dlinas1==dlinas2) && (i+1==max)) {
- printf("yes");
- return 0;
- }
- if (i==-1) {
- printf("no");
- return 0;
- }
- int j=0;
- while (s1[i]==s2[j]) {
- j++;
- }
- if (s1[i+1]==s2[j]) {
- printf("yes");
- return 0;
- }
- if ((i+1==dlinas1) && (flag==2)) {
- for (int j=0;j<max;j++) {
- if (s1[i]!=s2[j]) {
- printf("no");
- return 0;
- }
- }
- }
- if ((i+1==dlinas2) && ((flag==1) || (dlinas1==dlinas2))) {
- for (int j=0;j<max;j++) {
- if (s1[j]!=s2[i]) {
- printf("no");
- return 0;
- }
- }
- }
- printf("yes");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement