sion Δημοσ. 12 Ιανουαρίου 2011 Δημοσ. 12 Ιανουαρίου 2011 ΜΠΟΡΕΙ ΚΑΠΟΙΟΣ ΝΑ ΜΟΥ ΓΡΑΨΕΙ ΣΑΣ ΠΑΡΑΚΑΛΩ ΕΝΑ ΚΑΛΟ ΠΑΡΑΔΕΙΓΜΑ ΓΙΑ ΜΙΑ BUBBLE SORT Η ΟΠΟΙΑ ΘΑ ΣΙΜΕΤΕΧΕΙ ΣΕ ΣΥΓΧΩΝΕΥΣΗ ΠΙΝΑΚΩΝ ΣΕ ΤΡΙΤΟ ΠΙΝΑΚΑ.ΑΝ ΓΙΝΕΤΑΙ ΘΕΛΩ ΟΛΟ ΤΟΝ ΚΩΔΙΚΑ ΔΗΛΑΔΗ ΚΑΙ ΤΟΝ ΚΩΔΙΚΑ ΤΗΣ ΣΥΓΧΩΝΕΥΣΗΣ.ΟΛΑ ΑΥΤΑ ΣΤΗΝ c,c++ (ευχαριστώ εκ των προτέρων)
V.I.Smirnov Δημοσ. 12 Ιανουαρίου 2011 Δημοσ. 12 Ιανουαρίου 2011 ... ΜΙΑ 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; }
fotis4u Δημοσ. 12 Ιανουαρίου 2011 Δημοσ. 12 Ιανουαρίου 2011 Και εσύ για το μάθημα των "Δομές Δεδομένων και Αλγόριθμοι" το θέλεις ?
sion Δημοσ. 12 Ιανουαρίου 2011 Μέλος Δημοσ. 12 Ιανουαρίου 2011 Και εσύ για το μάθημα των "Δομές Δεδομένων και Αλγόριθμοι" το θέλεις ? ναι Άντε να καταλάβεις τι σημαίνει αυτό...Δεν ξέρετε να εκφράζεστε με σαφήνεια και ακριβολογία. Ο άλλος ίσως δώσει απάντηση αλλά σίγουρα δεν θα ασχοληθεί με το τι μπορεί να έχεις εσύ στο μυαλό σου - πρέπει να του το πεις ! Να ένα παράδειγμα 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.
Evgenios1 Δημοσ. 12 Ιανουαρίου 2011 Δημοσ. 12 Ιανουαρίου 2011 ας πουμε οτι εχω δυο πινακες δεκα και εννια στοιχειων και θελω να τα ταξινομισω και να τα βαλω σε ενα τριτο πινακα και η ταξινομηση να γινει με την βοηθεια της 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; }
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.