/** (c) 2012 Michał (Foxbond) Chraniuk */
/** zadanie 1 **
#include <iostream>
using namespace std;
int main (){
string source;
int ileLiczb;
int iloscWykonan=0;
cout << "Ile liczb chcesz sortowac: ";
cin >> ileLiczb;
int* liczby=new int[ileLiczb];
cout << "\nPodaj liczby rozdzielajac enterem:\n";
for ( int i = 0; i < ileLiczb; i++){
cin >> liczby[i];
}
int i = 1;
int j, pom;
////i := 2; n := Length(a);
while (i < ileLiczb) {
// a[1] ≤ ... ≤ a[i-1], i ≤ n+1 oraz i ≤ n
j = i;
pom = liczby[i];
// a[i] = pom
while (j>0 && liczby[(j-1)]>pom) {
// pom ≤ a[j+1] ≤...≤ a[i] oraz a[j-1]>pom
liczby[j] = liczby[(j-1)];
// pom ≤ a[j] ≤ a[j+1] ≤...≤ a[i]
j = j - 1;
iloscWykonan++;
}
// a[1] ≤...≤ a[j-1] ≤ pom ≤ a[j+1] ≤...≤ a[i]
liczby[j] = pom;
// a[1] ≤...≤ a[i-1] ≤ a[i]
i = i+1;
// a[1] ≤… ≤ a[i-2] ≤ a[i-1], i ≤ n+1
}
// a[1] ≤... ≤ a[i-2] ≤ a[i-1] oraz i=n+1
cout << "\n";
for (i=0;i<ileLiczb;i++){
cout << liczby[i] << "\n";
}
cout << "\nLiczba wykonan wewnetrznej petli: " << iloscWykonan << "\n";
system("PAUSE");
return 0;
}
**/
#include <iostream>
using namespace std;
int main (){
string source;
int ileLiczb;
cout << "Ile liczb chcesz sortowac: ";
cin >> ileLiczb;
int* liczby=new int[ileLiczb+1];
cout << "\nPodaj liczby rozdzielajac enterem:\n";
for ( int i = 0; i < ileLiczb; i++){
cin >> liczby[i];
}
int i = 1;
int j, pom;
////i := 2; n := Length(a);
while (i < ileLiczb) {
// a[1] ≤ ... ≤ a[i-1], i ≤ n+1 oraz i ≤ n
j = i;
pom = liczby[i];
// a[i] = pom
while (j>0 && liczby[(j-1)]>pom) {
// pom ≤ a[j+1] ≤...≤ a[i] oraz a[j-1]>pom
liczby[j] = liczby[(j-1)];
// pom ≤ a[j] ≤ a[j+1] ≤...≤ a[i]
j = j - 1;
}
// a[1] ≤...≤ a[j-1] ≤ pom ≤ a[j+1] ≤...≤ a[i]
liczby[j] = pom;
// a[1] ≤...≤ a[i-1] ≤ a[i]
i = i+1;
// a[1] ≤… ≤ a[i-2] ≤ a[i-1], i ≤ n+1
}
// a[1] ≤... ≤ a[i-2] ≤ a[i-1] oraz i=n+1
cout << "\n";
for (i=0;i<ileLiczb;i++){
cout << liczby[i] << "\n";
}
int doWstawienia;
int poz = 0;
cout << "Podaj liczbe do wstawienia: ";
cin >> doWstawienia;
j = ileLiczb;
while (j>0 && liczby[(j-1)]>doWstawienia) {
liczby[j] = liczby[(j-1)];
j = j - 1;
poz++;
}
cout << "\nPozycja wstawionej liczby: " << ileLiczb-poz+1 << "\n";
system("PAUSE");
return 0;
}
> Back