Program sortowanie

0

Witam!

Napisałem program sortujący wygenerowaną tablicę. Czy moglibyście powiedzieć mi co jest w kodzie nie tak, że nie sortuje poprawnie? Bardzo proszę o pomoc.

KOD:
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int podziel(int *A, int p, int k){
int s=A[p];

int i=p, j=k, t;
do{			
	if(A[i]>=s){
		do{	
			if(A[j]<s){
				t=A[i]; A[i]=A[j]; A[j]=t;	
				break;		
			}
			j--;
		}while(i<j);
	}
	i++;
}while(i<j);
return i;

}

void QS(int *A, int p, int k){
if(p!=k){
int is=podziel(A,p,k);
QS(A,p,is-1);
QS(A,is,k);
}
}

void main(){
int A[10], i, is;

srand((unsigned)time(NULL));

cout<<"Wygenerowana tablica:\nA = [ ";
for(i=0;i<10;i++){
	A[i]=rand()%41;	// generujemy liczby losowe w zakresie 0-40
	cout<<A[i]<<" ";
}
cout<<"]\n";

is=podziel(A,0,9);

cout<<"Podzielona tablica:\nA = [ ";
for(i=0;i<10;i++){
	cout<<A[i]<<" ";
}
cout<<"]\nMiejsce podzialu: "<<is<<endl;


QS(A,0,9);
cout<<"Posortowana tablica:\nA = [ ";
for(i=0;i<10;i++){
	cout<<A[i]<<" ";
}
cout<<"]\n";

getchar();

}

Bardzo proszę o pomoc i pozdrawiam
Mikuleshi

0
  1. brak znacznikow code
  2. bez sensu nazwy zmiennych
  3. czemu nie uzyjesz gotowego std::sort ?
  4. uzywales debugowania?
0

Jeśli chodzi o przycisk "Start Debugging" to tak użyłem go. Działam w Micrososft Visual C++. To jest zadanie na studiach, a ja nie do końca jeszcze kumam o co w tym chodzi.

2

dodaj gdzies na poczatku

#include <algorithm>

a pozniej jak wygenerujesz ta tablice napisz tak

std::sort(A, A+10);

posortowane

1

@fasadin: serio? tak według Ciebie ma wyglądać nauka programowania? OP, nie słuchaj go. std::sort jest dla tych, którzy wiedzą jak to działa.

0

@fasadin: Teraz działa, dzięki. :)
@nieznajomy987: Dlaczego krytykujesz fasadina, ale sam nic nie pomożesz?

0

Te zadanie na 100% miało pokazać mechanizm sortowania, czyli jak to działa od środka, a nie by używać gotowej funkcji... Bez spiny oczywiście wobec @fasadin, chciał pomóc :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1