Skip to content
Snippets Groups Projects
Commit dcb396b0 authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Beispielprogramme 18.12.2017

parent 7612cc42
Branches
No related tags found
No related merge requests found
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
for (int i = 1; name[i]; i++)
if (compare (name, i - 1, i) > 0)
{
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0)
{
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted--;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int done = 0;
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0 && !done)
{
done = 1;
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
done = 0;
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted--;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int done = 0;
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0 && !done)
{
done = 1;
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
done = 0;
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted--;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", "Anna", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int done = 0;
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0 && !done)
{
done = 1;
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
done = 0;
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted--;
}
}
int main (void)
{
char *name[] = { "Anna", "Berta", "Box", "Dieter", "Fritz", "Hans", "Heinrich",
"Hugo", "Lisa", "Maria", "Otto", "Peter", "Siegfried", "Thomas",
"Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0)
{
int new_sorted = 0;
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
new_sorted = i;
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted = new_sorted;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0)
{
int new_sorted = 0;
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
new_sorted = i;
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted = new_sorted;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", "Anna", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int sorted = 0;
while (name[sorted])
sorted++;
while (sorted > 0)
{
int new_sorted = 0;
for (int i = 1; i < sorted; i++)
if (compare (name, i - 1, i) > 0)
{
new_sorted = i;
char *temp = name[i - 1];
name[i - 1] = name[i];
name[i] = temp;
}
sorted = new_sorted;
}
}
int main (void)
{
char *name[] = { "Anna", "Berta", "Box", "Dieter", "Fritz", "Hans", "Heinrich",
"Hugo", "Lisa", "Maria", "Otto", "Peter", "Siegfried", "Thomas",
"Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, char *pivot, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (name[i] == pivot)
printf (" <==");
else if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, char *pivot, int left, int right)
{
int result = strcmp (name[left], pivot);
comparisons++;
display (name, pivot, left, right);
usleep (200000);
return result;
}
void quicksort (char **name, int left, int right)
{
int p = (left + right) / 2;
char *pivot = name[p];
int l = left;
int r = right;
while (l < r)
{
while (l < r && compare (name, pivot, l, r - 1) < 0)
l++;
while (l < r && compare (name, pivot, r - 1, l) > 0)
r--;
if (l < r)
{
char *temp = name[r - 1];
name[r - 1] = name[l];
name[l] = temp;
l++;
r--;
}
}
}
void sort (char **name)
{
int r = 0;
while (name[r])
r++;
quicksort (name, 0, r);
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, NULL, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, char *pivot, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (name[i] == pivot)
printf (" <==");
else if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, char *pivot, int left, int right)
{
int result = strcmp (name[left], pivot);
comparisons++;
display (name, pivot, left, right);
usleep (200000);
return result;
}
void quicksort (char **name, int left, int right)
{
int p = (left + right) / 2;
char *pivot = name[p];
int l = left;
int r = right;
while (l < r)
{
while (l < r && compare (name, pivot, l, r - 1) < 0)
l++;
while (l < r && compare (name, pivot, r - 1, l) > 0)
r--;
if (l < r)
{
char *temp = name[r - 1];
name[r - 1] = name[l];
name[l] = temp;
l++;
r--;
}
}
if (l < right)
quicksort (name, l, right);
}
void sort (char **name)
{
int r = 0;
while (name[r])
r++;
quicksort (name, 0, r);
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, NULL, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, char *pivot, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (name[i] == pivot)
printf (" <==");
else if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, char *pivot, int left, int right)
{
int result = strcmp (name[left], pivot);
comparisons++;
display (name, pivot, left, right);
usleep (200000);
return result;
}
void quicksort (char **name, int left, int right)
{
int p = (left + right) / 2;
char *pivot = name[p];
int l = left;
int r = right;
while (l < r)
{
while (l < r && compare (name, pivot, l, r - 1) < 0)
l++;
while (l < r && compare (name, pivot, r - 1, l) > 0)
r--;
if (l < r)
{
char *temp = name[r - 1];
name[r - 1] = name[l];
name[l] = temp;
l++;
r--;
}
}
if (r > left)
quicksort (name, left, r);
if (l < right)
quicksort (name, l, right);
}
void sort (char **name)
{
int r = 0;
while (name[r])
r++;
quicksort (name, 0, r);
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, NULL, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, char *pivot, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (name[i] == pivot)
printf (" <==");
else if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, char *pivot, int left, int right)
{
int result = strcmp (name[left], pivot);
comparisons++;
display (name, pivot, left, right);
usleep (200000);
return result;
}
void quicksort (char **name, int left, int right)
{
int p = (left + right) / 2;
char *pivot = name[p];
int l = left;
int r = right;
while (l < r)
{
while (l < r && compare (name, pivot, l, r - 1) < 0)
l++;
while (l < r && compare (name, pivot, r - 1, l) > 0)
r--;
if (l < r)
{
char *temp = name[r - 1];
name[r - 1] = name[l];
name[l] = temp;
l++;
r--;
}
}
if (r > left)
quicksort (name, left, r);
if (l < right)
quicksort (name, l, right);
}
void sort (char **name)
{
int r = 0;
while (name[r])
r++;
quicksort (name, 0, r);
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", "Anna", NULL };
sort (name);
display (name, NULL, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, char *pivot, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (name[i] == pivot)
printf (" <==");
else if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, char *pivot, int left, int right)
{
int result = strcmp (name[left], pivot);
comparisons++;
display (name, pivot, left, right);
usleep (200000);
return result;
}
void quicksort (char **name, int left, int right)
{
int p = (left + right) / 2;
char *pivot = name[p];
int l = left;
int r = right;
while (l < r)
{
while (l < r && compare (name, pivot, l, r - 1) < 0)
l++;
while (l < r && compare (name, pivot, r - 1, l) > 0)
r--;
if (l < r)
{
char *temp = name[r - 1];
name[r - 1] = name[l];
name[l] = temp;
l++;
r--;
}
}
if (r > left)
quicksort (name, left, r);
if (l < right)
quicksort (name, l, right);
}
void sort (char **name)
{
int r = 0;
while (name[r])
r++;
quicksort (name, 0, r);
}
int main (void)
{
char *name[] = { "Anna", "Berta", "Box", "Dieter", "Fritz", "Hans", "Heinrich",
"Hugo", "Lisa", "Maria", "Otto", "Peter", "Siegfried", "Thomas",
"Ulrich", "Zacharias", NULL };
sort (name);
display (name, NULL, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, char *pivot, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (name[i] == pivot)
printf (" <==");
else if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, char *pivot, int left, int right)
{
int result = strcmp (name[left], pivot);
comparisons++;
display (name, pivot, left, right);
usleep (200000);
return result;
}
void quicksort (char **name, int left, int right)
{
int p = (left + right) / 2;
char *pivot = name[p];
int l = left;
int r = right;
while (l < r)
{
while (l < r && compare (name, pivot, l, r - 1) < 0)
l++;
while (l < r && compare (name, pivot, r - 1, l) > 0)
r--;
if (l < r)
{
char *temp = name[r - 1];
name[r - 1] = name[l];
name[l] = temp;
l++;
r--;
}
}
if (r > left)
quicksort (name, left, r);
if (l < right)
quicksort (name, l, right);
}
void sort (char **name)
{
int r = 0;
while (name[r])
r++;
quicksort (name, 0, r);
}
int main (void)
{
char *name[] = { "Zacharias", "Ulrich", "Thomas", "Siegfried", "Peter", "Otto",
"Maria", "Lisa", "Hugo", "Heinrich", "Hans", "Fritz", "Dieter",
"Box", "Berta", "Anna", NULL };
sort (name);
display (name, NULL, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200);
return result;
}
int find_first (char **name, int i0)
{
int first = i0;
for (int i = i0 + 1; name[i]; i++)
if (compare (name, i, first) < 0)
first = i;
return first;
}
void sort (char **name)
{
int sorted = 0;
while (name[sorted])
{
int first = find_first (name, sorted);
char *temp = name[sorted];
name[sorted] = name[first];
name[first] = temp;
sorted++;
}
}
int main (void)
{
char *name[] = {
#include "names.h"
NULL
};
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
// display (name, left, right);
// usleep (200);
return result;
}
int find_first (char **name, int i0)
{
int first = i0;
for (int i = i0 + 1; name[i]; i++)
if (compare (name, i, first) < 0)
first = i;
return first;
}
void sort (char **name)
{
int sorted = 0;
while (name[sorted])
{
int first = find_first (name, sorted);
char *temp = name[sorted];
name[sorted] = name[first];
name[first] = temp;
sorted++;
}
}
int main (void)
{
char *name[] = {
#include "names.h"
NULL
};
sort (name);
display (name, -1, -1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int comparisons = 0;
void display (char **name, int left, int right)
{
printf ("\e[H\e[J");
for (int i = 0; name[i]; i++)
{
printf ("%s", name[i]);
if (i == left || i == right)
printf (" <--");
printf ("\n");
}
printf ("%d\n", comparisons);
}
int compare (char **name, int left, int right)
{
int result = strcmp (name[left], name[right]);
comparisons++;
display (name, left, right);
usleep (200000);
return result;
}
void sort (char **name)
{
int sorted = 0;
while (name[sorted])
{
int first = sorted;
for (int i = sorted + 1; name[i]; i++)
if (compare (name, i, first) < 0)
first = i;
char *temp = name[sorted];
name[sorted] = name[first];
name[first] = temp;
sorted++;
}
}
int main (void)
{
char *name[] = { "Otto", "Lisa", "Anna", "Heinrich", "Siegfried", "Peter",
"Dieter", "Hugo", "Berta", "Maria", "Fritz", "Box", "Hans",
"Thomas", "Ulrich", "Zacharias", NULL };
sort (name);
display (name, -1, -1);
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment