Codeq
26.04.2002, 00:10
Aufgabe 1: Programmieren Sie das Verfahren Insertionsort.
Aufgabe 2: Programmieren Sie das Verfahren Quicksort.
Aufgabe 3: Programmieren Sie das Verfahren "Binäre Suche" mithilfe einer rekursiven Funktion. Gesucht werden soll die Position einer Zahl x in einem sortierten Array a. Wenn x mehrfach vorkommt, soll irgendeine Postion, an der x vorkommt, ausgegeben werden. Wenn x nicht vorkommt, soll -1 ausgegeben werden.
Verwenden Sie Insertionsort oder Quicksort, um das Array zu sortieren.
und hier das was ich bis jetzt hab... muss mir noch die main basteln mit den arrays.... brauche aber noch ideen das es netter aussieht :D
sind btw alle 3 in einem source..
#include <iostream>
#include <algorithm>
using namespace std;
void insertionsort (int[] a, int n) {
int i,k ;
for (k=0; k<n; k++) {
v=a[k];
i=k;
while (i>0 && a[i-1]>v)
{
swap (a[i],a[i-1]);
i--;
}
}
}
void quicksort (int[] a, int lo, int hi) {
// lo ist der unterste Index, hi ist der oberste Index des
// zu sortierenden (Teil-)Feldes a
int i=lo
int j=hi
int h;
int x=a[(lo+hi)/2];
// Aufteilung
do {
while (a[i]<x) {
i++;
}
while (a[j]>x) {
j--;
}
if (i<=j)
{
swap (a[i],a[j]);
i++;
j--;
}
} while (i<=j);
// Rekursion
if (lo<j) quicksort(a, lo, j);
if (i<hi) quicksort(a, i, hi);
}
void suche (int a[], int n, int ges) {
int mitte;
// Die mittlere Zahl raussuchen
mitte = (int)((n-a[0])/2);
while (a[mitte] != ges) {
if (a[mitte] < ges) suche(a+mitte, n, ges);
if (a[mitte] > ges) suche(a, mitte, ges);
}
cout << "Die gesuchte Zahl " << ges << " steht an der " << mitte+1 <<". Position!" << endln;
}
void main () {
int[] a =
cin
}
Aufgabe 2: Programmieren Sie das Verfahren Quicksort.
Aufgabe 3: Programmieren Sie das Verfahren "Binäre Suche" mithilfe einer rekursiven Funktion. Gesucht werden soll die Position einer Zahl x in einem sortierten Array a. Wenn x mehrfach vorkommt, soll irgendeine Postion, an der x vorkommt, ausgegeben werden. Wenn x nicht vorkommt, soll -1 ausgegeben werden.
Verwenden Sie Insertionsort oder Quicksort, um das Array zu sortieren.
und hier das was ich bis jetzt hab... muss mir noch die main basteln mit den arrays.... brauche aber noch ideen das es netter aussieht :D
sind btw alle 3 in einem source..
#include <iostream>
#include <algorithm>
using namespace std;
void insertionsort (int[] a, int n) {
int i,k ;
for (k=0; k<n; k++) {
v=a[k];
i=k;
while (i>0 && a[i-1]>v)
{
swap (a[i],a[i-1]);
i--;
}
}
}
void quicksort (int[] a, int lo, int hi) {
// lo ist der unterste Index, hi ist der oberste Index des
// zu sortierenden (Teil-)Feldes a
int i=lo
int j=hi
int h;
int x=a[(lo+hi)/2];
// Aufteilung
do {
while (a[i]<x) {
i++;
}
while (a[j]>x) {
j--;
}
if (i<=j)
{
swap (a[i],a[j]);
i++;
j--;
}
} while (i<=j);
// Rekursion
if (lo<j) quicksort(a, lo, j);
if (i<hi) quicksort(a, i, hi);
}
void suche (int a[], int n, int ges) {
int mitte;
// Die mittlere Zahl raussuchen
mitte = (int)((n-a[0])/2);
while (a[mitte] != ges) {
if (a[mitte] < ges) suche(a+mitte, n, ges);
if (a[mitte] > ges) suche(a, mitte, ges);
}
cout << "Die gesuchte Zahl " << ges << " steht an der " << mitte+1 <<". Position!" << endln;
}
void main () {
int[] a =
cin
}