mirka Публикувано Септември 6, 2007 Report Share Публикувано Септември 6, 2007 Моля за помощ за следната задача! Да се извърши сравнително тестване на методите за сортировка, чрез пряка селекция и пряко вмъкване! Предварително благодаря! Цитирай Link to comment Сподели другаде More sharing options...
crio Публикувано Септември 6, 2007 Report Share Публикувано Септември 6, 2007 1. Пряка селекцияНамираме най-малката стойност в масиваРазменяме позицията и с първата несортирана стойностТова се повтаря върху масив без сортираните стойностиhttp://img523.imageshack.us/img523/7269/sorting1ai8.png Примерен код:#include <iostream.h> int main() { const int len = 10; int a[len]={30,40,20,80,70,60,50,90,100,10}; int b,c,d; for(int i=0;i<=len;i++){ d = a[i]; b = i; for(int j=i+1;j<len;j++){ if(a[j]<d){ d=a[j]; b=j; } c=a[b]; a[b]=a[i]; a[i]=c; } } for(b=0;b<len;b++) cout<<a[b]<<endl; cin.get(); return 0; } 2. Пряко вмъкванеВсеки път се премахва един елемент от входния масив, и се вмъква на правилното място в масива който ще ни даде резултата.Няма значение в какъв ред взимаме елементите от входния масив.Повтаря се докато не останат елементи никакви в входния масивhttp://upload.wikimedia.org/wikipedia/en/2/25/Insertion_sort_animation.gif Ето примерен код:#include <iostream.h> int main() { const int len = 10; int a[len]={30,40,20,80,70,60,50,90,100,10}; for (int i=2; i<=len-1; i++) { int x = a[i]; int j = i - 1; a[0] = x; while (x < a[j]) { a[j + 1] = a[j]; j--; } a[j + 1] = x; } for(int b=0;b<len;b++) cout<<a[b]<<endl; cin.get(); return 0; } 3. ЗаключениеКато цяло двата метода си приличат. И при двата, след n обхождания на масива, първите n са вече подредени. За пряката селекция, това са n-те най-малки елементи, докато при прякото вмъкване това са първите n които масива е обходил. Предимството на прякото вмъкване е че то обхожда само толкова елементи колкото са му нужни за да добави докато, метода на пряката селекция трябва да обходи всички елементи за да намери най-малките n елемента. Ако си разбрала обяснението ми върху тези методи, предполагам че ще ти е лесно да решиш задачата. Цитирай Link to comment Сподели другаде More sharing options...
mirka Публикувано Септември 7, 2007 Author Report Share Публикувано Септември 7, 2007 Сърдечно благодаря! Цитирай Link to comment Сподели другаде More sharing options...
dj_parimo Публикувано Октомври 27, 2007 Report Share Публикувано Октомври 27, 2007 Някой да знае от къде мога да си намеря компилатора C++? Много ви благодаря предварително!!! Цитирай Link to comment Сподели другаде More sharing options...
blood Публикувано Октомври 27, 2007 Report Share Публикувано Октомври 27, 2007 Тук. Цитирай Link to comment Сподели другаде More sharing options...
Препоръчан пост
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.