Poniższy kod zdaje się poprawnie sortować (sortowanie shella), bo sprawdzalem coutami, ale z niewiadomych dla mnie przyczyn crashuje się.
Oto część kodu, jak trzeba wstawić cały program dajcie znać:
#include <iostream>
#include <cstdlib> // for srand and rand
#include <ctime> // for time
#include <math.h>
using namespace std;
int potega(int podst,int pot){
int wynik = podst;
for(int i = 1; i < pot; i++){
wynik = wynik *podst;
}
return wynik;
}
void shellON32(int tab[], int n){
int k = 1;
int przerwa = 2*(n / potega(2, k+1)) +1;
cout << "przerwa" << przerwa << endl;
while(przerwa > 0){
int j = 0;
for(int i = przerwa; i < n; i++){
int temp = tab[i];
for(j = i; j >= przerwa && tab[j - przerwa] > temp; j = j - przerwa){
tab[j] = tab[j - przerwa];
}
tab[j] = temp;
}
k++;
przerwa = 2*(n / potega(2, k+1)) +1;
}
}
int main()
{
//srand(time(0));
int n = 30;
int tab[n];
for(int i = 0; i < n; i++){
tab[i] = rand() % 100+1;
}
for(int i = 0; i < n; i++){
cout << tab[i] << endl;
}
shellON32(tab, n);
cout << "sortu sortu" << endl;
for(int i = 0; i < n; i++){
cout << tab[i] << endl;
}
return 0;
}
Będę wdzięczny za wskazanie błędu