Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: mefestofel   (22.05.2007 в 00:30)
Попробуйте 'быструю сортировку':

void Sort(int in[], int m, int n)
  {
   int i,j,res;
   if (m>=n) return;
   for(i=m, j=n, res=1;i<j;res>0?j--:i++)
   if (in([i]>in[j])
    {
     int k = in[i]; in[i]=in[j]; in[j]=k;
     res=-res; 
    }
   Sort(in,m,i-1);
   Sort(in,i+1,n);
  }

Можно доработать алгоритм, когда останется по 40 элементов в массиве, можно использовать сортировку вставками - увеличение скорости на 25% - лучший метод - это комбинация 'быстрой сортировки, сортировки вставками, сортировки Шелла', также на олимпиадах Вам могут подсунуть масиив, в котором средний элемент всегда будет максимумом или минимумом(O(n2) операций), в таких случаях можно перемешать элементы массива...


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: