Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania
Viewing all articles
Browse latest Browse all 65225

Partycjonowanie tablicy.

$
0
0

Nie działa mi poprawnie następujący program, mający partycjonować tablicę względem ostatniego elementu:

#include <iostream>

using namespace std;

void part( int * input, int l, int r );

int main()
{
	int A[6]={12,97,13,42,50,29};
		
	cout << "Tablica przed partycjonowaniem"<< endl;
	
	for(int i=0; i<6; ++i)
	{
		cout << A[i] << endl;
	}
	
	part(A,0,6);
	
	cout << "Tablica po partycjonowaniu"<< endl;
	
	for(int i=0; i<6; ++i)
	{
		cout << A[i] << endl;
	}
	
	return 0;
	
}

/*************************************************************************************************************************************************************/

void swap(float &a, float &b)
{
	a = a + b;
	b = a - b;
	a = a - b;
	return;
}

/*************************************************************************************************************************************************************/

void part( int * input, int l, int r ) //partycjonuje wzgledem ostatniej liczby
{
    int pivot = input[ r ];
   
    while( l < r )
    {
        while( input[ l ] < pivot ) 
             l++;
       
        while( input[ r ] > pivot )
             r--;
       
        if( input[ l ] == input[ r ] )
             l++;
        else if( l < r )
        {
        	swap(input[ l ],input[ r ]);
        }
    }
}

Tablica po partycjonowaniu powinna wyglądać tak, że elementy mniejsze od 29 są z lewej, a większe z prawej. Tymczasem po wywołaniu programu pojawia się tablica: 1,97,13, 42, 50, 29 (skąd w ogóle ta jedynka?!?!). Nie wiem czemu tak się dzieje. Byłbym wdzięczny jakby ktoś zerknął okiem i wskazał co zrobiłem nie tak.


Viewing all articles
Browse latest Browse all 65225

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>