Académique Documents
Professionnel Documents
Culture Documents
Insert(ion)-sort
void InsertionSort (<tip> niz[], int n)
{
int i, j;
for (i=1; i<n; i++)
{
<tip> x=niz[i];
for (j=i; j>0 && x<niz[j-1]; j--)
niz[j]=niz[j-1];
niz[j]=x;
}
}
Shell-sort
Bubble-sort
void BubbleSort (<tip> niz[], int n)
{
int i, j;
for (i=0; i<n-1; i++)
{
for (j=0; j<n-i-1; j++)
if (niz[j]>niz[j+1])
{
<tip> pom=niz[j];
niz[j]=niz[j+1];
niz[j+1]=pom;
}
}
}
Quick-sort
void qSort(int niz[], int begin, int end)
{
Merge-sort
void mergeSort(int niz[], int begin, int end)
{
if (begin<end)
{
int sredina = (begin + end)/2;
int i, j,k, len=end-begin+1;
int pom[len];
mergeSort(niz, begin, sredina);
mergeSort(niz, sredina+1, end);
/* spajanje */
i=begin; j=sredina+1; k=0;
while (i<=sredina && j<=end)
pom[k++] = (niz[i]<=niz[j]) ? niz[i++] : niz[j++];
while (i<=sredina) pom[k++]=niz[i++];
while (j<=end) pom[k++]=niz[j++];
for (i=0; i<len; i++) niz[begin+i] = pom[i];
}
}
do {
if ((p = ucitaj(in, &st)) == 4) {
if (n == c)
niz = (STUDENT *)realloc(niz, (c *= 2) * sizeof(STUDENT));
niz[n++] = st;
}
} while (p);
fclose(in);
}
ispis(niz, n);
free(niz);
return 0;
}
BINARNA
#include<stdio.h>
#include <stdlib.h>
typedef struct student
{
char ime[20];
char prezime[20];
char indeks[10];
float prosjek;
} STUDENT;
void citaj(STUDENT *);
int main()
{
int i,n;
FILE *fp;
STUDENT *studenti;
printf("Unesite broj studenata:");
scanf("%d",&n);
studenti=(STUDENT *)malloc(n*sizeof(STUDENT));
for(i=0; i<n; i++)
{
printf("Podaci o %d. studentu:\n " ,i+1);
citaj(studenti+i);
}
else
{
niz = (STUDENT *)malloc(c * sizeof(STUDENT));
if (dat = fopen(argv[1], "rb"))
{
do
{
p = fread(&jedan, sizeof(STUDENT), 1, dat);
if (p)
{
if (n == c) niz = (STUDENT *)realloc(niz, (c *= 2) *
sizeof(STUDENT));
niz[n++] = jedan;
}
}
while (p);
fclose(dat);
}
printf("=== =============== ===============
=======\n");
printf("RB. PREZIME
IME
PROSJEK\n");
printf("=== =============== ===============
=======\n");
for (i = 0; i < n; i++) printf("%2d. ", i + 1), pisi(niz + i), printf("\n");
printf("=== =============== ===============
=======");
free(niz);
}
return 0;
}
void pisi(STUDENT *niz)
{
printf("%-15s %-15s %6.2f", niz->prezime, niz->ime, niz->prosjek);
}
SELECTION SORT STUDENTI
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
char ime[20];
char prezime[20];
char indeks[10];
float prosjek;
} STUDENT;
int ucitaj(FILE *in, STUDENT *s)
{
return fscanf(in, "%*d. %s %s %s %f", s->indeks, s->prezime, s->ime,
&s->prosjek);
}
void ispis(STUDENT *niz, int n)
{
int i;
printf("=== ======= ====================
==================== =======\n");
printf("RB. INDEKS PREZIME
IME
PROSJEK\n");
printf("=== ======= ====================
==================== =======\n");
for (i = 0; i < n; i++)
printf("%2d. %s %-20s %-20s %6.2f\n", i + 1,
niz[i].indeks, niz[i].prezime, niz[i].ime, niz[i].prosjek);
printf("=== ======= ====================
==================== =======\n");
}
int main()
{
int i, p, n = 0, c = 10;
char s[100];
FILE *in;
STUDENT st, *niz = (STUDENT *)malloc(c * sizeof(STUDENT));
if (in =fopen("studenti.txt", "r"))
{
fgets(s, 100, in);
fgets(s, 100, in);
fgets(s, 100, in);
do
{
if ((p = ucitaj(in, &st)) == 4)
{
if (n == c)
niz = (STUDENT *)realloc(niz, (c *= 2) * sizeof(STUDENT));
niz[n++] = st;
}
}
while (p);
fclose(in);
}
ispis(niz, n);
printf("\n\n\n--------------------------------------------------------------\n\n");
selection_sort(niz,n);
ispis(niz, n);
free(niz);
return 0;
}
MERGE SORT
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
char ime[20];
char prezime[20];
char indeks[10];
float prosjek;
} STUDENT;
int ucitaj(FILE *in, STUDENT *s)
{
return fscanf(in, "%*d. %s %s %s %f", s->ime, s->prezime, s->indeks,
&s->prosjek);
}
void ispis(STUDENT *niz, int n)
{
int i;
printf("=== ======= ====================
==================== =======\n");
printf("RB. INDEKS PREZIME
IME
PROSJEK\n");
printf("=== ======= ====================
==================== =======\n");
for (i = 0; i < n; i++)
printf("%2d. %s %-20s %-20s %6.2f\n", i + 1,
niz[i].indeks, niz[i].prezime, niz[i].ime, niz[i].prosjek);
printf("=== ======= ====================
==================== =======\n");
}
int main()
{
int i, p, n = 0, c = 10;
char s[100];
FILE *in;
STUDENT st, *niz = (STUDENT *)malloc(c * sizeof(STUDENT));
if (in =fopen("studenti.txt", "r"))
{
fgets(s, 100, in);
fgets(s, 100, in);
fgets(s, 100, in);
do
{
if ((p = ucitaj(in, &st)) == 4)
{
if (n == c)
niz = (STUDENT *)realloc(niz, (c *= 2) * sizeof(STUDENT));
niz[n++] = st;
}
}
while (p);
fclose(in);
}
ispis(niz, n);
printf("\n\n\n--------------------------------------------------------------\n\n");
//selection_sort(niz,n);
merge_sort(niz, 0, n - 1);
ispis(niz, n);
free(niz);
return 0;
}
SORTIRANJE PO SAMOGLASNICIMA
#include <stdio.h>
#include <stdlib.h>
int brojSamoglasnika(char *);
void sort(char **, int);
int main()
{
int n, i;
char **rijec;
printf("Broj rijeci: ");
scanf("%d", &n);
rijec=(char **)malloc(n * sizeof(char *));
for(i=0; i<n; i++)
{
rijec[i] = malloc(100*sizeof(char));
}
for(i=0; i<n; i++)
{
printf("%d. rijec: ", i+1);
scanf("%s", rijec[i]);
}
sort(rijec, n);
for(i=0; i<n; i++)
{
printf("%s\n",rijec[i]);
}
return 0;
}
void sort(char **rijec, int n)
{
int i, j, max;
char **pom;
for(i=0; i<n-1; i++)
{
for(max=i, j=i+1; j<n; j++)
if((brojSamoglasnika(rijec[j])) > (brojSamoglasnika(rijec[max])))
max=j;
if(max!=i)
{
pom=rijec[i];
rijec[i]=rijec[max];
rijec[max]=pom;
}
}
}
s += broj;
}
i = 0;
}
}
if(i != 0)
{
string[i]=0;
printf("%s\n", string);
broj = atoi(string);
s += broj;
}
fclose(dat1);
}
dat2=fopen(argv[2], "w");
if(dat2!=NULL)
{
fprintf(dat2, "Suma %d", s);
fclose(dat2);
}
return 0;
}
SORTIRANJE PO TACKAMA X Y
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct ta
{
float x,y;
} TACKA;
void citaj(TACKA *);
int main()
{
TACKA *t;
int i,j,n;
printf("Broj tacaka za unos je:");
scanf("%d",&n);
t=(TACKA*)malloc(n*sizeof(TACKA));
for(i=0; i<n; i++)
{
printf("Podaci o tacki br.%d: \n",i+1);
citaj(t+i);
}
bubble_sort(t,n) ;
for(i=0; i<n; i++)
{
printf("X:%.3f Y:%.3f \n",t[i].x,t[i].y );
}
return 0;
}
void citaj(TACKA *t)
{
printf("X koordinata: ");
scanf("%f",&t->x);
printf("Y koordinata: ");
scanf("%f",&t->y);
}
void bubble_sort(TACKA *t, int n)
{
int i, j;
TACKA pom;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (t[j].x < t[j + 1].x)
{
pom.x = t[j].x;
t[j].x = t[j + 1].x;
t[j + 1].x = pom.x;
}
else if(t[j].x==t[j+1].x)
{
if (t[j].y < t[j + 1].y)
{
pom.y = t[j].y;
t[j].y = t[j + 1].y;
t[j + 1].y = pom.y;
}
}
}
}
}
N rijeci u DATOTECI
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void broj(char **, int, int);
int main()
{
FILE *dat;
char **rijec, word[100];
int c=10, n=0, br,i;
rijec=(char **)malloc(c * sizeof(char *));
for(i=0;i<c;i++){
rijec[i] = malloc(100*sizeof(char));
}
printf("Broj ponavljanja: "); scanf("%d", &br);
if (dat = fopen("A.txt", "r"))
{
while (fscanf(dat,"%s", word)!=EOF)
{
if (n == c) rijec = (char **)realloc(rijec, (c *= 2) * sizeof(char *));
strcpy(rijec[n++], word);
}
fclose(dat);
}
for(i=0; i<n; i++)
printf("%s\n", rijec[i]);
printf("\n\n\n");
broj(rijec, n, br);
return 0;
}
void broj(char **rijec, int n,int br)
{
int i, j, brojac=0;
for(i=0; i<n; i++)
{
brojac=0;
for(j=i; j<n; j++)
{
if (strcmp(rijec[i], rijec[j])==0)
brojac++;
}
if ((brojac) == br) printf("\nRijec %s se pojavljuje %d puta.\n", rijec[i],
brojac);
}
}