Автор Тема: Външно сортиране в С  (Прочетена 1867 пъти)

kovalski

  • Новаци
  • *
  • Публикации: 2
    • Профил
Външно сортиране в С
« -: Apr 27, 2006, 21:04 »
бих искал да помоля всички които са се сблъсквали с този "проблем" да дадът някакви неща по въпроса icon_confused.gif

трябва да направя програма за сортиране на Н числа от файл с ограничен буфер М

много ще съм ви благодарен ако ми помогнете с каквото и да е
Активен

  • Гост
Външно сортиране в С
« Отговор #1 -: Apr 28, 2006, 01:00 »
Сортирането си е сортиране. Трудното е когато трябва да се сортират елементи, с неизвестен размер и ключ. Но при тебе всичко си е просто и ясно. Препоръчвам ти обаче, да прочетеш нещо за бързото сортиране на Хор. То е най-бързото универсално сортиране, а не е толкова сложно, като пирамидалното или метода на костенурките и зайците. В никакъв случай не ползвай мехури, което е първото което хрумва на повечето хора, защото е повече от елементарно, но и свръх тромаво и "не-престижно".
Ако въпроса ти е как се борави с файлове в C, трябвало е така да го зададеш. В това много не мога да ти помогна, без да попрочета и аз нещо. Но със сигурност ще се намери някой, който ги помни тия работи.
Успех в начинанието.
Активен

vaniop

  • Напреднали
  • *****
  • Публикации: 17
    • Профил
Външно сортиране в С
« Отговор #2 -: Apr 28, 2006, 08:56 »
ами едно от първите неща, които ми попаднаха е статията в wikipedia - http://en.wikipedia.org/wiki/External_sort. много е достъпна, даже има пример с конкретни стойности на M и H '<img'>

мисля, че единственото по-сложно във външното сортиране е как да го направиш "на място". демек да не използваш файл различен от този, който сортираш.
ако искаш помощ или нещо конкретно имаш за питане, свиркай.

предния отговор по темата ми напомня за един изпит по програмиране в университета, където асистента даде задача, която трябваше да решим с външно сортиране. някакси не успя обаче да накара колежките да разберат, че няма нищо лошо да си прочетеш целия файл в паметта и да си го сортираш както си знаеш '<img'>
Активен

  • Гост
Външно сортиране в С
« Отговор #3 -: Apr 28, 2006, 10:48 »
Извинявам се за глупостта си. А иначе имам самочуствието на човек, който като не знае - пита. Но снощи съм се унесъл май преди на пипна леглото. Вече знам какво е външно сортиране и защо това което съм писал не отговаря на въпроса. Още веднъж извинете ме и благодаря за меката форма на критицизъм, който иначе е съвсем на място. Тъкмо завършвам университет.
И на kovalski, успех в начинанието. Пак.
Активен

souldead

  • Напреднали
  • *****
  • Публикации: 46
    • Профил
Външно сортиране в С
« Отговор #4 -: May 02, 2006, 12:56 »
ами идва ми на ума за едно такова сортиране което учихме в техникума - първо сравняваш да кажем през 16 елемента, после намаляваш стъпката със степен на 2... ама нямам точни спомени как се правеше...
Активен

misho_cg

  • Напреднали
  • *****
  • Публикации: 350
    • Профил
    • WWW
Външно сортиране в С
« Отговор #5 -: May 02, 2006, 20:30 »
Мехурчеста сортировка, минаваш с цикъл през всичките и ако примерно А1<А2  им разменяш местата, и така докато не се случи разместване, тогава значи всички числа са сортирани.  ':zzz:'

едит: Разнеяш стойностите на А1 и А2



Активен

раят за котките, всъщност е адът на мишките !

Ironman

  • Напреднали
  • *****
  • Публикации: 23
    • Профил
Външно сортиране в С
« Отговор #6 -: May 02, 2006, 21:16 »
Аз лично бих ти препоръчал библиотечната функция QSORT
Ето пример '<img'>

/* qsort example */
#include <stdio.h>
#include <stdlib.h>

int values[] = { 40, 10, 100, 90, 20, 25 };

int compare (const void * a, const void * B ) {
  return ( *(int*)a - *(int*)b );
}

int main () {
  int * pItem;
  int n;
  qsort (values, 6, sizeof(int), compare);
  for (n=0; n<6; n++)
  {
    printf ("%d ",values[n]);
  }
  return 0;
}

Output:
10 20 25 40 90 100
Активен

souldead

  • Напреднали
  • *****
  • Публикации: 46
    • Профил
Външно сортиране в С
« Отговор #7 -: May 05, 2006, 10:27 »
Правете разлика м/у просто сортиране и външно сортиране. Мехурчестото освен че е най-бавния и неефективен метод за просто сортиране и е неприложим за външно, quick sort незнам дали може да се ползва за външно, но въпросната функция от STL със сигурност е за просто сортиране, обикновено се налага сам да си реализираш алгоритмите за външно сортиране или да използваш продукти от трти страни.
Активен

kovalski

  • Новаци
  • *
  • Публикации: 2
    • Профил
Външно сортиране в С
« Отговор #8 -: May 20, 2006, 17:58 »
а някой някакъв код да има който да сортира файл с числа  '<img'>
Активен