ich habe ein kleines Problem.
Ich habe schon das meistse des Quelltextes kommentiert, allerdings verstehe ich den in #ten gekennzeichneten Bereich nicht....
Ich wäre euch sehr dankbar, wenn Ihr mir beim verstehen dieser 4 Zeilen behilflich sein könntet!
Code:
/* Written by Sanchit Karve (born2c0de)
Contact Me at born2c0de AT dreamincode DOT net
*/
#include <stdio.h>
#define MAX 20
//#define SHOWPASS
void print(int *a,int n) // Funktion Printf nur für Array
{
int i; // Laufvariable
// a[i] = der Anzahl der eingegebenen Arrays
for(i=0;i<n;i++)
printf("%d\t",a[i]);
}
void radixsort(int *a,int n)
{
int i,b[MAX],m=0,exp=1;
for(i=0;i<n;i++)// n = Elementanzahl
{
if(a[i]>m) // wenn a[element (i) ] größer als m ( = 0) dann
m=a[i]; // setzte = sogroß wie das elemnt
}// SUCHE DES GROESSTEN ARRAY ELEMNTS!!!
while(m/exp>0)// solange m ( = größtes element) / 1 ist größer als 0
{
int bucket[10]={0}; // erstellt array mit 10 Feldern und alle beinhalten die Zahl 0
for(i=0;i<n;i++) // solange i ( = 0) ist kleiner als n( = elementanzahl)
bucket[a[i]/exp%10]++;
// a[i]/exp%10 macht die letzte Ziffer ausfindig
// bucket[a[i]/exp%10]++; Erhöht die Arraystelle der Aufindig gemachten Endzahl um1 ( letzte zahl 9 array an Stelle 9 und eins erhöht)
##########################################################################################################################################
for(i=1;i<10;i++) // solange i ( = 1) ist keliner als 10
//printf("\nFeld%d",bucket[i]);
bucket[i]+=bucket[i-1];
// bucket[i] = Anzahl der Zahlen in jedem Array Part ist
// bucket[i-1] = Anzahl der Zahlen im Array vor dem jetzigen Array
for(i=n-1;i>=0;i--)// i = n (Anzalh der elemente -1) solange bis i größer oder gleich 0 ist
b[--bucket[a[i]/exp%10]]=a[i]; <------
##########################################################################################################################################
for(i=0;i<n;i++)
a[i]=b[i];
exp*=10;
//#ifdef SHOWPASS
printf("\nPASS : ");
print(a,n);
//#endif
}
}
int main()
{
int arr[MAX]; // Array Größe
int i,n; // n = Elemntzahl, i = Laufvariable für for-schleife
printf("Enter total elements (n < %d) : ",MAX);
scanf("%d",&n);// Einlesen der Anzahl
printf("Enter %d Elements : ",n);
for(i=0;i<n;i++) // einlesen der einzelnen Elemnte
scanf("%d",&arr[i]); //speichern der einzelnen Elemnte in dem Array
printf("\nARRAY : ");
print(&arr[0],n);// Augsgeben aller Array veriablen
radixsort(&arr[0],n);
printf("\nSORTED : ");
print(&arr[0],n);
printf("\n");
getchar();
getchar();
getchar();
return 0;
}
Vielen Dank im Vorraus!
Liebe Grüße
Scarface
Hat sich gerklärt =)
Bitte schließen!






