| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C++] сортировки! |
| Автор: dark007 9.6.2010, 14:12 |
| помогиде написать програмный код.. нужно написать программу которая сортировала бы массив методом "пузырька",а на экран выводился бы каждый шаг сортировки...очень надо,срочно... |
| Автор: toxx 9.6.2010, 14:36 |
| http://forum.vingrad.ru/faq/topic-200441.html |
| Автор: dark007 9.6.2010, 18:26 | ||
ну так она не показывает каждый шаг сортировки же... |
| Автор: toxx 9.6.2010, 18:29 |
| так допиши вывод каждого шага |
| Автор: dark007 9.6.2010, 18:54 | ||
| в этом и проблема что я не пойму как... Добавлено через 1 минуту и 3 секунды
в этом и проблема что я не пойму как.. |
| Автор: Earnest 9.6.2010, 19:01 |
| Для домашних заданий, курсовых, существует "Центр Помощи". Тема перенесена! |
| Автор: susanin 9.6.2010, 19:28 | ||
|
| Автор: dark007 9.6.2010, 19:49 | ||||
и еще эта программа не работает...она не печатает каждый шаг сортировки а выдает нулевой шаг цикла просто за конечный этап сортировки... |
| Автор: dark007 9.6.2010, 20:50 |
| #include <iostream> using namespace std; const MAX = 5; void Swap(int arr[], int pos1, int pos2) { int tmp; tmp = arr[pos1]; arr[pos1] = arr[pos2]; arr[pos2] = tmp; } void PrintArray(int arr[]) { for(int i = 0; i < MAX; ++i) cout << arr[i] << endl; } void BubbleSort(int arr[]) { int i, j; for(i = 0; i < MAX - 1; ++i) for(j = 0; j < MAX - i; ++j) if (arr[j] > arr[j + 1]) Swap(arr, j , j + 1); } int main() { int arr[MAX]; int i; for (i = 0; i < MAX; ++i) { cout << "Enter element: " << endl; cin >> arr[i]; } PrintArray(arr); BubbleSort(arr); cout << "After sort: " << endl; PrintArray(arr); char r; cin >> r; return 0; } объсните мне просто что и где надо вставить в теле цикла сортировки чтобы выводился на экран каждый шаг сортировки... |
| Автор: dark007 10.6.2010, 19:46 |
| #include <iostream.h> #include <stdio.h> #include <time.h> #include <stdlib.h> #include <string.h> class Array { private: int count; int* a; long steps; public: Array(){}; Array(int s); ~Array (); void print(); void fill_random(); void fill_user(); void sort_puzir(); void sort_vibor(); void sort_vstav(); / void steps_nul(); int get_steps(); }; Array::Array(int s) { count = s; a = new int[s]; if(!a) cout << "оштбка при созданние массива" << endl; } Array::~Array() { if(a) delete[] a; } void Array::print() { cout << "The array contains:" << endl; for(int i = 0; i<count; ++i) cout << a[i] << ' '; cout << endl; } void Array::fill_random() { int r = count*10; // randomize(); for(int i = 0; i<count; ++i) a[i] = rand(); cout<<a[i]<<' '; } void Array::fill_user() { cout << "Input elements:" << endl; for(int i = 0; i<count; ++i) { cout << "a[" << i << "] = "; cin >> a[i]; cout << endl; } } void Array::sort_puzir() { int tmp; steps = 0; for (int i = 0; i<count; ++i) for (int j = 0; j<count-1; ++j) { if (a[j]>a[j+1]) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; steps++; } steps++; } } void Array::sort_vstav() { int tmp; int j; steps = 0; for (int i = 0; i<count; ++i) { j = i; tmp = a[i]; while (j > 0 && tmp < a[j-1]) { a[j] = a[j-1]; j--; } a[j] = tmp; steps++; } } void Array::sort_vibor() { int tmp; steps = 0; for (int i = 0; i<count-1; ++i) for (int j= i+1; j<count-1; j++) { if (a[i]>a[j]) { tmp = a[i]; a[i] = a[j]; a[j] = tmp; } steps++; } } void Array::steps_nul() { steps = 0; } int Array::get_steps () { return steps; } int main (void) { Array *a0, *a1, *a2, *a3; int num_elements, min, min_num, how_fil; int num_steps1=NULL, num_steps2=NULL, num_steps[3]; char metod[21]; cout << "Input count of elements: "; cin >> num_elements; cout << endl; a0 = new Array(num_elements); a1 = new Array(num_elements); a2 = new Array(num_elements); a3 = new Array(num_elements); while (1) { cout << "How do you want to fill massiv? (1 - yorself, 2 - by randomize): "; cin >> how_fil; switch ( how_fil ) { case 1 : a0->fill_user(); break; case 2 : a0->fill_random(); break; default : cout << "Not correct value" << endl; } if ((how_fil==1) || (how_fil==2)) break; } for (int i = 0; i<num_elements; ++i) { a1[i] = a0[i]; a2[i] = a0[i]; a3[i] = a0[i]; } a0->print(); cout << endl; cout << "Sortirovka 1-go massiva metodom puzirka: " << endl; a1->sort_puzir(); a1->print(); num_steps[0] = a1->get_steps(); cout << "Sotirovka vipolnena za " << num_steps[0] << " shagov" << endl; cout << endl; cout << "Sortirovka 2-go massiva metodom vstavki: " << endl; a2->sort_vstav(); a2->print(); num_steps[1] = a2->get_steps(); cout << "Sotirovka vipolnena za " << num_steps[1] << " shagov" << endl; cout << endl; cout << "Sortirovka 3-go massiva metodom vibora: " << endl; a3->sort_vibor(); a3->print(); num_steps[2] = a3->get_steps(); cout << "Sotirovka vipolnena za " << num_steps[2] << " shagov" << endl; cout << endl; min_num = 0; min = num_steps[0]; for ( i=0; i<3; ++i) if (num_steps[i] < min) { min = num_steps[i]; min_num = i; } switch(min_num){ case 0: strcpy(metod,"puzirka"); break; case 1: strcpy(metod,"vstavki"); break; case 2: strcpy(metod,"vibora"); break; } cout << "Sortiovka metodom " << metod << " vipolnyaetsya za menshee chislo shagov: " << min << endl; char Q; cout << "For exit press monkey:"; cin >> Q; return 0; return 0; } вот,посмотрите еще раз на программу...помогите мне ее дописать чтобы она выводила каждый шаг сортировки на экран... |