• Nie Znaleziono Wyników

const int w=9

N/A
N/A
Protected

Academic year: 2021

Share "const int w=9"

Copied!
1
0
0

Pełen tekst

(1)

/* radixsort – wersja A */

#include<stdio.h>

#include<string.h>

const int w=9; /* liczba wierszy */

const int k=4; /* liczba kolumn */

const int s=24; /* rozmiar alfabetu */

void countsort(char [][k],int);

void radixsort(char dane[][k]);

void write(char [][k]);

int main(void) {

char dane[w][k] = {"aba","aaa","bab", "cac","bac","bca", "bab","abb","baa"};

radixsort(dane);

return 0;

}

void write(char dane[w][k]) {

int licz;

printf("\n\n");

for(licz=0;licz<w;licz++) puts(dane[licz]);

}

(2)

void countsort(char dane[w][k], int p) { int i,j;

char x;

int count[s]={0};

char temp[w][k-1];

/* zliczanie */

for(i=0;i<w;i++) count[dane[i][p] - 97]++;

for(i=1;i<s;i++) count[i] += count[i-1];

for(i=0;i<s;i++) if(count[i]) count[i]--;

/* porzadkowanie */

for(i=w-1;i>=0;i--) {

x=dane[i][p];

for(j=0;j<k-1;j++)

temp[count[x-97]][j]=dane[i][j];

count[x-97]--;

}

/* przepisywanie */

for(i=0;i<w;i++) for(j=0;j<k-1;j++)

dane[i][j]=temp[i][j];

}

(3)

void radixsort(char dane[w][k]) {

write(dane);

for(int i=k-2; i>=0;i--) {

countsort(dane,i);

write(dane);

} }

aba aaa bca baa bab bab abb cac bac

aaa baa bab bab cac bac aba abb bca aba

aaa bab cac bac bca bab abb baa

aaa baa bab bab cac bac aba abb bca

aaa aba abb baa bab bab bac bca cac

Cytaty