| C++ |
| ähnliche Sprachen: | C C# C-Talk D Cilk Java Objective-C Pike TOM | |
| Beschreibung: | C++ wurde 1980 (1983 ist der Name C++ entstanden) von Bjarne Stroustrup entwickelt. C++ ist ein Superset von C, d.h. beinhaltet die komplette Syntax von C und erweitert diese um objektorientierte Fähigkeiten, die Simula (67) entstammen. C++ ist heute die populärste Sprache überhaupt. |
| Boyer-Moore Search | Michael Neumann |
/*
* Boyer-Moore Search
*
* 01.06.1998, implemented by Michael Neumann
*/
# include <algorithm>
int BoyerMooreSearch(char* text, char* muster, int tlen, int mlen)
{
int i, j, skip[256];
for(i=0; i<256; ++i) skip[i]=mlen;
for(i=0; i<mlen; ++i) skip[muster[i]]=mlen-1-i;
for(i=j=mlen-1; j>=0; --i, --j)
while(text[i] != muster[j]) {
i += max(mlen-j,skip[text[i]]);
if(i >= tlen) return -1;
j = mlen-1;
}
return i;
}
|
| Ein sehr guter Algorithmus um einen
Substring in einem String zufinden. |
| BubbleSort | Michael Neumann |
/*
* BubbleSort
*
* 20.11.1998, implemented by Michael Neumann (mneumann@ntecs.de)
*/
# ifndef __BUBBLESORT_HEADER__
# define __BUBBLESORT_HEADER__
# include <algorithm>
template <class itemType, class indexType=int>
void BubbleSort(itemType a[], indexType l, indexType r)
{
static indexType i, j;
for(i=r; i>l; --i)
for(j=l; j<i; ++j)
if(a[j] > a[j+1]) std::swap(a[j], a[j+1]);
}
# endif
|
| BubbleSort |
| BucketSort | Michael Neumann |
/*
* BucketSort (Distrubution Counting)
*
* 21.11.1998, implemented by Michael Neumann (mneumann@ntecs.de)
*/
# ifndef __BUCKETSORT_HEADER__
# define __BUCKETSORT_HEADER__
# include <algorithm>
// itemType must have an typecast to "int", which identifies the sortkey
template <class itemType, class indexType=int>
class BucketSort {
public:
// the array b[] had to be the same size like a[]
void Sort(itemType a[], itemType b[], indexType l, indexType r) {
a = &a[l]; b = &b[l];
for(int i=0; i<sizeof(int); ++i) {
sort_byte(i,a,b,r-l+1);
std::swap(a,b);
}
}
protected:
sort_byte(int bytenr, itemType a[], itemType b[], indexType count) {
static indexType i;
typedef unsigned char* UCP;
for(i=0; i<256; ++i) occurences[i] = 0; // better: memset
for(i=0; i<count; ++i) ++occurences[((UCP)&a[i])[bytenr]];
for(i=1; i<256; ++i) occurences[i] += occurences[i-1];
for(i=count-1; i>=0; --i)
b[--occurences[((UCP)&a[i])[bytenr]]] = a[i];
}
int occurences[256];
};
# endif
|
| BucketSort |
| GgT | Michael Neumann |
/*
Größter Gemeinsamer Teiler
Es sind nur Werte größer als Null zulässig.
*/
int ggt( int a, int b )
{
int temp;
if( a < b ) { temp=a; a=b; b=temp; }
while( (temp = a%b) != 0 )
{
a = b;
b = temp;
};
return b;
}
|
| Grösster Gemeinsamer
Teiler |
| Hash1 | Michael Neumann |
/*
* Hash1.Cpp
*
* 03.06.1998, implemented by Michael Neumann
*/
int hash1(int M, char* t)
{
unsigned h=0;
for(;*t;++t) h = ((h << 8)+ *t) % M;
return h;
}
|
| Standard Hash Funktion |
| hashpjw | Michael Neumann |
/*
* hashpjw, algorithm by P.J.Weinberg
*
* 03.06.1998, implemented by Michael Neumann
*/
int hashpjw(int M, char* t)
{
unsigned h=0, g;
for(;*t;++t) {
h = (h << 4)+ *t;
if(g=h&0xf0000000) {
h ^= g>>24;
h ^= g;
}
}
return h%M;
}
|
| Hashfunktion von P.J. Weinberg
|
| Hello World (1) | Michael Neumann |
#include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World\n"); return 0; } |
| Gibt "Hello World" auf dem Bildschirm
aus. |
| Hello World (2) | Michael Neumann |
#include <iostream.h> int main(int argc, char *argv[]) { cout << "Hello World" << endl; return 0; } |
| Gibt "Hello World" auf dem Bildschirm
aus. |
| Hello World (standard) | Daniel Kress |
#include <iostream> using namespace std; int main() { cout << "Hello World" << endl; return 0; } |
| Gibt "Hello World" auf dem Bildschirm
aus. |
| InsertionSort | Michael Neumann |
/*
* InsertionSort
*
* 20.11.1998, implemented by Michael Neumann (mneumann@ntecs.de)
*/
# ifndef __INSERTIONSORT_HEADER__
# define __INSERTIONSORT_HEADER__
# include <algorithm>
template <class itemType, class indexType=int>
void InsertionSort(itemType a[], indexType l, indexType r)
{
static indexType i, j;
static itemType v;
for(i=l+1; i<=r; ++i) {
for(j=i-1, v=a[i]; j>=l && a[j]>v; a[j+1]=a[j], --j);
a[j+1] = v;
}
}
# endif
|
| InsertionSort |
| MergeSort | Michael Neumann |
/*
* MergeSort
*
* 21.11.1998, implemented by Michael Neumann (mneumann@ntecs.de)
*/
# ifndef __MERGESORT_HEADER__
# define __MERGESORT_HEADER__
# include <algorithm>
// Array b[] must have same size like a[]; result is in a[]!
template <class itemType, class indexType=int>
void MergeSort(itemType a[], itemType b[], indexType l, indexType r)
{
indexType i, j, k, m;
if(r > l) {
m = (r+l)/2;
MergeSort(a,b,l,m);
MergeSort(a,b,m+1,r);
for(i=m+1; i>l; --i) b[i-1] = a[i-1];
for(j=m; j<r; ++j) b[r+m-j] = a[j+1];
for(k=l; k<=r; ++k) a[k] = (b[i] < b[j]) ? b[i++] : b[j--];
}
}
# endif
|
| MergeSort |
| QuickSort | Michael Neumann |
/*
* QuickSort, algorithm by C.A.R. Hoare (1960)
*
* 01.06.1998, implemented by Michael Neumann (mneumann@ntecs.de)
*/
# ifndef __QUICKSORT_HEADER__
# define __QUICKSORT_HEADER__
# include <algorithm>
template <class itemType, class indexType=int>
void QuickSort(itemType a[], indexType l, indexType r)
{
static itemType m;
static indexType j;
indexType i;
if(r > l) {
m = a[r]; i = l-1; j = r;
for(;;) {
while(a[++i] < m);
while(a[--j] > m);
if(i >= j) break;
std::swap(a[i], a[j]);
}
std::swap(a[i],a[r]);
QuickSort(a,l,i-1);
QuickSort(a,i+1,r);
}
}
# endif
|
| QuickSort |
| SelectionSort | Michael Neumann |
/*
* SelectionSort
*
* 20.11.1998, implemented by Michael Neumann (mneumann@ntecs.de)
*/
# ifndef __SELECTIONSORT_HEADER__
# define __SELECTIONSORT_HEADER__
# include <algorithm>
template <class itemType, class indexType=int>
void SelectionSort(itemType a[], indexType l, indexType r)
{
static indexType i, j, min;
for(i=l; i<r; ++i) {
for(min=i, j=i+1; j<=r; ++j) if(a[j] < a[min]) min = j;
std::swap(a[min], a[i]);
}
}
# endif
|
| SelectionSort |
| ShellSort | Michael Neumann |
/*
* ShellSort
*
* 20.11.1998, implemented by Michael Neumann (mneumann@ntecs.de)
*/
# ifndef __SHELLSORT_HEADER__
# define __SHELLSORT_HEADER__
# include <algorithm>
template <class itemType, class indexType=int>
void ShellSort(itemType a[], indexType l, indexType r)
{
static indexType i, j, h;
static itemType v;
for(h=1; h<=(r-l)/9; h=3*h+1);
for(; h>0; h/=3) {
for(i=l+h; i<=r; ++i) {
for(j=i-h, v=a[i]; j>=l && a[j]>v; a[j+h]=a[j], j-=h);
a[j+h] = v;
}
}
}
# endif
|
| ShellSort |
| Hello World (1) | DOS/Windows | Michael Neumann |
#include <stdio.h> void main() { printf("Hello World\n"); } |
| Gibt "Hello World" auf dem Bildschirm
aus. |
| Hello World (2) | DOS/Windows (obsolete C++) | Michael Neumann |
#include <iostream.h> void main() { cout << "Hello World" << endl; } |
| Gibt "Hello World" auf dem Bildschirm
aus. |