Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as C++ by registered user SKYDOS ( 17 years ago )
/*
* Nick: SKYDOS
* Author: Andrew Shmig
*/
#include <fstream>
using namespace std;
int n, data[100], second[100], r, pos, st;
void sortq (int, int);
int partition (int, int);
int stat (int, int, int);
int partition2 (int, int);
int main() {
freopen ("input.txt", "r", stdin);
freopen ("output.txt", "w", stdout);
scanf ("%d %d", &n, &pos;);
for (int i=1; i<=n; i++) {
scanf ("%d", &data;[i]);
second[i] = data[i];
}
printf ("Before sorting:\n");
for (int i=1; i<=n; i++) printf ("%i ", data[i]);
sortq (1, n);
printf ("\nAfter sorting:\n");
for (int i=1; i<=n; i++) printf ("%i ", data[i]);
printf ("\n\nUsing quicksort...");
printf ("\nThe %ith statistic is %i\n\n", pos, data[pos]);
printf ("Using another alg...\n");
printf ("In @stat@ function...\n");
st = stat (1, n, pos);
printf ("The %ith statistic is %i\n\n", pos, st);
return (0);
}
int partition2 (int b, int e) {
int x, i;
x = second[b];
i = b;
for (int l=b+1; l<=e; l++) {
if (second[l]<=x) {
i++;
swap (second[l], second[i]);
}
}
swap (second[i], second[b]);
for (int k=1; k<=n; k++) printf ("%i ", second[k]);
printf ("\n");
return i;
}
int stat (int b, int e, int p) {
if (b<e) {
r = partition2 (b, e);
if (r==p) return second[r]; else
if (p<r) {
stat (b, r-1, p);
} else {
stat (r+1, e, p);
}
}
}
int partition (int b, int e) {
int x, i;
x = data[b];
i = b;
for (int l=b+1; l<=e; l++) {
if (data[l]<=x) {
i++;
swap (data[i], data[l]);
}
}
swap (data[i], data[b]);
return i;
}
void sortq (int b, int e) {
if (b<e) {
r = partition (b, e);
sortq (b, r-1);
sortq (r+1, e);
}
}
Revise this Paste
Children: 64202