Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Hello,

I need your help..

λοιπόν έχω μία συνάρτηση σε c++ όπου μου έχουν δώσει για να απαντήσω κάποιες ερωτήσεις πάνω σε αυτή (είναι κάποιο είδος τεστ για δουλειά στο εξωτερικό και όχι κάποια εργασία για σχολή)...

 

με ρωτάνε τι κάνει, πολυπλοκότητα κτπ κτπ...

πρώτα απόλα το τι κάνει η συνάρτηση νομίζω πως είναι ταξινόμηση, δεν ξέρω εάν μπορείτε να μου το επιβεβαιώσετε και εσείς και να μου πείτε εάν είναι κάποιο γνωστό είδος ταξινόμησης γιατί εγώ ακόμα έχω θολό κεφάλι..

δεύτερον μπορείτε να μου εξηγήσετε λίγο το κομμάτι του κώδικα που έχει το "||" γιατί δεν κατάλαβα πως ακριβώς δουλεύει σε εκείνο το σημείο...

ευχαριστωωωωώ ...

:)

 

η συνάρτηση είναι:

 

>
vοid funcτiοn(inτ *pαrαm1, inτ pαrαm2)
{
 inτ i, j, χ, y, ζ, τemp, τesτ;
 fοr(i=pαrαm2-1; i>0; --i)
 {
   τesτ = 0;
   χ = y = j = 0;
   ζ = 1;

   fοr (; j<i; χ++, ζ++)
   {
     if (*(inτ*)(pαrαm1+j) > *(inτ*)(pαrαm1+ζ))
     {
       χ = y + *pαrαm1 - *(pαrαm1+j+1);
       τemp = *(pαrαm1+j);
       *(pαrαm1+j) = *(pαrαm1+j+1);
       y = χ?++χ:χ-2;
       *(pαrαm1+j+1) = τemp;
       τesτ=1;
       if (χ > y)
         y = τemp+χ || τemp == ++χ;
     }
     ++j;
   }

   if (!τesτ)
     breακ;
 }
}

 

 

ps: Υπάρχει λόγος που χρησιμοποιήθηκαν ελληνικοί χαρακτήρες.. :Ρ

ps2: Η συνάρτηση είναι ατόφια όπως μου την έστειλαν (εκτός από κάποιους χαρακτήρες που τους έχω αλλάξει σε ελληνικούς) και δεν παίζει κάποιο λάθος...

ps3: εάν κάποιος είναι σίγουρος για την πολυπλοκότητα please let me know :)

Δημοσ. (επεξεργασμένο)

Hello,

I need your help..

λοιπόν έχω μία συνάρτηση σε c++ όπου μου έχουν δώσει για να απαντήσω κάποιες ερωτήσεις πάνω σε αυτή (είναι κάποιο είδος τεστ για δουλειά στο εξωτερικό και όχι κάποια εργασία για σχολή)...

 

με ρωτάνε τι κάνει, πολυπλοκότητα κτπ κτπ...

πρώτα απόλα το τι κάνει η συνάρτηση νομίζω πως είναι ταξινόμηση, δεν ξέρω εάν μπορείτε να μου το επιβεβαιώσετε και εσείς και να μου πείτε εάν είναι κάποιο γνωστό είδος ταξινόμησης γιατί εγώ ακόμα έχω θολό κεφάλι..

δεύτερον μπορείτε να μου εξηγήσετε λίγο το κομμάτι του κώδικα που έχει το "||" γιατί δεν κατάλαβα πως ακριβώς δουλεύει σε εκείνο το σημείο...

ευχαριστωωωωώ ...

:)

 

η συνάρτηση είναι:

 

ps: Υπάρχει λόγος που χρησιμοποιήθηκαν ελληνικοί χαρακτήρες.. :Ρ

 

 

Σε αυτή τη συνάρτηση, δεν βλέπω κάτι περίεργο. Εάν την μελετήσεις λίγο, τότε θα καταλάβεις τι κάνει.

 

By the way, άλλαξα όλους τους χαρακτήρες σε αγγλικούς (included λέξεις όπως function, void, temp) για να είναι 100% ΟΚ.

Επεξ/σία από Hal9000
Δημοσ.

Σε αυτή τη συνάρτηση, δεν βλέπω κάτι περίεργο. Εάν την μελετήσεις λίγο, τότε θα καταλάβεις τι κάνει.

 

By the way, άλλαξα όλους τους χαρακτήρες σε αγγλικούς (included λέξεις όπως function, void, temp) για να είναι 100% ΟΚ.

 

σβήσε στο post σου την συνάρτηση φίλε μου. την άλλαξα για να μην βρίσκεις το post με copy paste στο google και εσύ πήγες και την έφτιαξες? σβήσε την συνάρτηση σε παρακαλώ

 

ευχαριστώ

Δημοσ. (επεξεργασμένο)

σβήσε στο post σου την συνάρτηση φίλε μου. την άλλαξα για να μην βρίσκεις το post με copy paste στο google και εσύ πήγες και την έφτιαξες? σβήσε την συνάρτηση σε παρακαλώ

 

ευχαριστώ

 

 

Φυσικά και την έφτιαξα.

 

Δεν σε καταλαβαίνω.

 

Γιατί να μην μπορεί κάποιος να την βρει μέσω google; Δεν θες να την βρει κάποιος και να σου δώσει βοήθεια; Για να βρεις βοήθεια δεν έγραψες εδώ;

 

Ξανακάνω copy paste την συνάρτηση και εδώ, εκτός code tags μήπως μπορέσει κανείς να την βρει πιο εύκολα από Google

 

>void function(int *param1 , int param2)
{
 int i, j, x, y, z, temp, test;
 for(i=param2-1; i>0; --i)
 {
   test = 0;
   x = y = j = 0;
   z = 1;

   for (; j<i; x++, z++)
   {
     if (*(int*)(param1+j) > *(int*)(param1+z))
     {
       x = y + *param1 - *(param1+j+1);
       temp = *(param1+j);
       *(param1+j) = *(param1+j+1);
       y = x?++x:x-2;
       *(param1+j+1) = temp;
       test=1;
       if (x > y)
         y = temp+x || temp == ++x;
     }
     ++j;
   }

   if (!test)
     break;
 }
}

Επεξ/σία από Timonkaipumpa
Δημοσ.

Χαχαχαχα τον αγαπώ τον κύριο από πάνω. Φτιάξε και το void function(inτ *param1 , int param2) ξέμεινε ελληνικό :P

Δημοσ.

Ωραίος!

 

Έτοιμο και αυτό!

 

Οπότε, έτσι πρέπει να είναι ΟΚ:

 

void function(int *param1 , int param2)

{

int i, j, x, y, z, temp, test;

for(i=param2-1; i>0; --i)

{

test = 0;

x = y = j = 0;

z = 1;

 

for (; j<i; x++, z++)

{

if (*(int*)(param1+j) > *(int*)(param1+z))

{

x = y + *param1 - *(param1+j+1);

temp = *(param1+j);

*(param1+j) = *(param1+j+1);

y = x?++x:x-2;

*(param1+j+1) = temp;

test=1;

if (x > y)

y = temp+x || temp == ++x;

}

++j;

}

 

if (!test)

break;

}

}

Δημοσ.

και για να μην μεινει αναπαντητο το τι κανει ο παραπάνω κώδικας....

αρκεί να αφαιρέσουμε τα "σκουπίδια" που μας "παραπλανούν"

 

έτσι έχουμε

 

>
#include <stdio.h>

void function(int *param1 , int param2)
{
 int i, j,  z, temp, test;
 for(i=param2-1; i>0; --i)
 {
   test = 0;
   j = 0;
   for (z=1; j<i; z++)
   {
     if (param1[j] > param1[z])
     {
       temp = param1[j];
       param1[j] = param1[j+1];
       param1[j+1] = temp;
       test=1;
     }
     ++j;
   }

   if (!test)
     break;
 }
}

int main(){
   int param[]={20,15,10,1,2,3,9,8,7,6,5};
   function(param,11);
   for (int i=0;i<11;i++)
   printf("%d ",param[i]);
   getchar();
}

 

το οποίο όντως κάνει ταξινόμηση!

Δημοσ.

Εμένα εξαρχής η απορία μου ήταν γιατί δεν δοκιμάστηκε πρώτα η συνάρτηση σε μια main() (όπως έκανε πριν λίγο ο virxen) πριν καν τεθεί ως ερώτηση! Σίγουρα θα είχε βρει την απάντηση ο ts σε χρόνο υπο-εκατονταπλάσιο από τον χρόνο που σπατάλησε για να γεμίσει τον κώδικα με ελληνικούς χαρακτήρες!

 

EDIT:

On a 2nd thought, με search & replace έγιναν οι αντικαταστάσεις, αλλά η απορία παραμένει :lol:

Δημοσ.

Όσο για την πολυπλοκότητα νομίζω:

 

Αν πάρουμε σαν βασική πράξη την param1[j] > param1[z], τότε: O(param22)

 

i<=param2-1...............j<i

Σ(..................Σ(O(1)........) = ... = O(param22)

i=1...........................j=0

 

 

 

 

(Δεν μπορούμε να γράψουμε σε LATEX ......?)

Δημοσ.

(Δεν μπορούμε να γράψουμε σε LATEX ......?)

 

 

Αρκετά καλή ιδέα!!!

 

 

Γιατί δεν το προτείνεις στην ενότητα για τις προτάσεις για το site;

 

Θα ήταν αρκετά καλό να μπορεί κανείς να εισάγει "κώδικα" από LaTeX και να τυπώνεται. Ίσως σε τίποτα tags, π.χ. [latex] ο κώδικας latex[/latex]

Δημοσ.
Ίσως σε τίποτα tags, π.χ. [latex] ο κώδικας latex[/latex]

 

Αυτό ακριβώς.

Υπάρχει σε πολλά μαθηματικά και μη forums, απλά προσπαθώ να σκεφτώ αν θα ήταν τόσο χρήσιμο στο insomnia. Μία στις τόσες όμως ίσως χρειαστεί, και δεν νομίζω ότι θα ήταν τόσο δύσκολο να μπει μία τέτοια επιλογή.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...