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

bubble sort στην c kai στην c++


sion

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

Δημοσ.

ΜΠΟΡΕΙ ΚΑΠΟΙΟΣ ΝΑ ΜΟΥ ΓΡΑΨΕΙ ΣΑΣ ΠΑΡΑΚΑΛΩ ΕΝΑ ΚΑΛΟ ΠΑΡΑΔΕΙΓΜΑ ΓΙΑ ΜΙΑ BUBBLE SORT Η ΟΠΟΙΑ ΘΑ ΣΙΜΕΤΕΧΕΙ ΣΕ ΣΥΓΧΩΝΕΥΣΗ ΠΙΝΑΚΩΝ ΣΕ ΤΡΙΤΟ ΠΙΝΑΚΑ.ΑΝ ΓΙΝΕΤΑΙ ΘΕΛΩ ΟΛΟ ΤΟΝ ΚΩΔΙΚΑ ΔΗΛΑΔΗ ΚΑΙ ΤΟΝ ΚΩΔΙΚΑ ΤΗΣ ΣΥΓΧΩΝΕΥΣΗΣ.ΟΛΑ ΑΥΤΑ ΣΤΗΝ c,c++ (ευχαριστώ εκ των προτέρων)

post-186880-0-83038100-1294793537_thumb.png

Δημοσ.

... ΜΙΑ BUBBLE SORT Η ΟΠΟΙΑ ΘΑ ΣΙΜΕΤΕΧΕΙ ΣΕ ΣΥΓΧΩΝΕΥΣΗ ΠΙΝΑΚΩΝ ΣΕ ΤΡΙΤΟ ΠΙΝΑΚΑ....

 

Άντε να καταλάβεις τι σημαίνει αυτό...Δεν ξέρετε να εκφράζεστε με σαφήνεια και ακριβολογία.

Ο άλλος ίσως δώσει απάντηση αλλά σίγουρα δεν θα ασχοληθεί με το τι μπορεί να έχεις εσύ στο μυαλό σου - πρέπει να του το πεις !

 

Να ένα παράδειγμα Buble-Sort πλήρως αντικειμενοστρεφές που κάνει ταξινόμηση σε πίνακα.

Αν σου ήσουν πιο σαφής, πιθανόν θα έδινα ακριβώς αυτό που ήθελες.

 

>/*
   Object Oriented Buble-Sort demo

   Use "Bubble sort" method for sorting an 
   array list A of n elements A[0], ..., A[n-1] 
   in an ascending order.

     ------------------------
           V.I.Smirnov
     ------------------------

*/
#include  <stdio.h>
const int TRUE  = 1;
const int FALSE = 0;

typedef    int        DATA_TYPE;
typedef    DATA_TYPE  ARY_LIST[];

class Sort 
{
 private:


   DATA_TYPE  *A;   // Array list A[]
   int         n;   // size of A


 public:
   Sort (int size) { A = new DATA_TYPE[n=size]; }
   ~Sort()  { delete []A; }
   void build_list (DATA_TYPE input[]);
   void debug_print(int iteration, int debug, char *hdr);
   void Bubble_Sort(DATA_TYPE input[]);
};



void Sort::build_list (ARY_LIST input)
{
  for(int i = 0; i < n; i++)
      A[i] = input[i];
}



/*
   debug_print ():
     Print the array list A[n] for each iteration
*/
void Sort::debug_print (int  iteration, int debug, char *hdr)
{
  if (debug == 0)
     printf("\n %s \n", hdr);
  else
     printf(" Pass #%d:", iteration + 1);
  for (int i = 0; i < n; i++)
      printf(" %d", A[i]);
  printf("\n");
}


/*
   Bubble_Sort(): 
     Bubble sort for an array list of "n" elements  
*/
void Sort::Bubble_Sort(ARY_LIST input)
{
   int swap_flag = TRUE;

   build_list(input);  // Build array A
   debug_print (0, 0,"List to be sorted in ascending order:");

   for (int iteration = 0; iteration < n && swap_flag == TRUE; iteration++)
   {
     swap_flag = FALSE;
     for(int i = 0; i < n - iteration-1; i++)
        if (A[i] > A[i + 1])
        {
           // Swap them
           swap_flag = TRUE;
           DATA_TYPE swap_area = A[i];
           A[i] = A[i + 1];
           A[i + 1] = swap_area;
        }
     debug_print(iteration, 1, "");
   }
}



/*
  main(): 
    Test driver for bubble sort of an array list
*/
int main()
{
  // Declare an object of "Sort" class
  Sort bubble_srt_obj(10);
  static ARY_LIST  A = { 33, 60,  5, 15, 25,
                         12, 45, 70, 35, 7   };

  printf("\n **  OOP IMPLEMENTATION OF BUBBLE SORT  **\n");

  bubble_srt_obj.Bubble_Sort(A);
  bubble_srt_obj.debug_print(0, 0,"List sorted using bubble sort:");

  return 0;
}

Δημοσ.

Και εσύ για το μάθημα των "Δομές Δεδομένων και Αλγόριθμοι" το θέλεις ?

 

ναι

 

Άντε να καταλάβεις τι σημαίνει αυτό...Δεν ξέρετε να εκφράζεστε με σαφήνεια και ακριβολογία.

Ο άλλος ίσως δώσει απάντηση αλλά σίγουρα δεν θα ασχοληθεί με το τι μπορεί να έχεις εσύ στο μυαλό σου - πρέπει να του το πεις !

 

Να ένα παράδειγμα Buble-Sort πλήρως αντικειμενοστρεφές που κάνει ταξινόμηση σε πίνακα.

Αν σου ήσουν πιο σαφής, πιθανόν θα έδινα ακριβώς αυτό που ήθελες.

 

>/*
   Object Oriented Buble-Sort demo

   Use "Bubble sort" method for sorting an 
   array list A of n elements A[0], ..., A[n-1] 
   in an ascending order.

     ------------------------
           V.I.Smirnov
     ------------------------

*/
#include  <stdio.h>
const int TRUE  = 1;
const int FALSE = 0;

typedef    int        DATA_TYPE;
typedef    DATA_TYPE  ARY_LIST[];

class Sort 
{
 private:


   DATA_TYPE  *A;   // Array list A[]
   int         n;   // size of A


 public:
   Sort (int size) { A = new DATA_TYPE[n=size]; }
   ~Sort()  { delete []A; }
   void build_list (DATA_TYPE input[]);
   void debug_print(int iteration, int debug, char *hdr);
   void Bubble_Sort(DATA_TYPE input[]);
};



void Sort::build_list (ARY_LIST input)
{
  for(int i = 0; i < n; i++)
      A[i] = input[i];
}



/*
   debug_print ():
     Print the array list A[n] for each iteration
*/
void Sort::debug_print (int  iteration, int debug, char *hdr)
{
  if (debug == 0)
     printf("\n %s \n", hdr);
  else
     printf(" Pass #%d:", iteration + 1);
  for (int i = 0; i < n; i++)
      printf(" %d", A[i]);
  printf("\n");
}


/*
   Bubble_Sort(): 
     Bubble sort for an array list of "n" elements  
*/
void Sort::Bubble_Sort(ARY_LIST input)
{
   int swap_flag = TRUE;

   build_list(input);  // Build array A
   debug_print (0, 0,"List to be sorted in ascending order:");

   for (int iteration = 0; iteration < n && swap_flag == TRUE; iteration++)
   {
     swap_flag = FALSE;
     for(int i = 0; i < n - iteration-1; i++)
        if (A[i] > A[i + 1])
        {
           // Swap them
           swap_flag = TRUE;
           DATA_TYPE swap_area = A[i];
           A[i] = A[i + 1];
           A[i + 1] = swap_area;
        }
     debug_print(iteration, 1, "");
   }
}



/*
  main(): 
    Test driver for bubble sort of an array list
*/
int main()
{
  // Declare an object of "Sort" class
  Sort bubble_srt_obj(10);
  static ARY_LIST  A = { 33, 60,  5, 15, 25,
                         12, 45, 70, 35, 7   };

  printf("\n **  OOP IMPLEMENTATION OF BUBBLE SORT  **\n");

  bubble_srt_obj.Bubble_Sort(A);
  bubble_srt_obj.debug_print(0, 0,"List sorted using bubble sort:");

  return 0;
}

 

 

ας πουμε οτι εχω δυο πινακες δεκα και εννια στοιχειων και θελω να τα ταξινομισω και να τα βαλω σε ενα τριτο πινακα και η ταξινομηση να γινει με την βοηθεια της bubble sort.

Δημοσ.

ας πουμε οτι εχω δυο πινακες δεκα και εννια στοιχειων και θελω να τα ταξινομισω και να τα βαλω σε ενα τριτο πινακα και η ταξινομηση να γινει με την βοηθεια της bubble sort.

>int pinakas1[10] = {...};
int pinakas2[9] = {...}

θελω να τα ταξινομισω

>bubblesort(pinakas1,10);
bubblesort(pinakas2,9);

και να τα βαλω σε ενα τριτο πινακα

>int pinakas3[19];
std::move(pinakas1,pinakas1+10,pinakas3);
std::move(pinakas2,pinakas2+9,pinakas3+10)

η ταξινομηση να γινει με την βοηθεια της bubble sort.

>
template <class T, class Predicate > __inline
void BubbleSort(T* arr,int count,Predicate pred)
{
for(int i = 0; i < count; ++i)
	for(int j = 0; j < count - 1 ; ++j)
		if(pred(arr[j],arr[j+1]))
			std::swap(arr[j],arr[j+1]);
}

 

 

Predicate: Μια συναρτηση η οποια παιρνει δυο αντικειμενα τυπου Τ και επιστρεφει bool

πχ

>bool biger(T q,T p)
{
return q>p;
}

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...