Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: Люди напишите пожалуйста быструю сортировку на C++.
1
  1  Бабушкин Олег, 07 января 2010 г. 18:32:47
      понятно..)
  2  Мехрдоди Одил(ТРГИ), 07 января 2010 г. 18:19:47
      2Бабушкин Олег,
на CodeBlocks там это время само выводит на консоль, если считать из в файла и записывать в файл.
  3  Бабушкин Олег, 07 января 2010 г. 18:16:09
      Спасибо Соболев Дима)
  4  Самаль Александр Васильевич, 07 января 2010 г. 18:11:26
      #include <algorithm>
...
sort(begin, end);
  5  Соболев Дима, 07 января 2010 г. 15:33:33
      Пример замера времени:

#include <iostream>
#include <time.h>

using namespace std;

int main()
{
int a = 0;
for (int i = 1; i <= 100000000; i ++)
a ++;
cout << clock() << endl;
return 0;
}

Результат вывода: время в миллисекундах.
  6  Бабушкин Олег, 07 января 2010 г. 12:53:28
      Ничего критичного вроде произойти и не должно было) Но смысл в том что разница все равно есть. И на более серьезных вещах СТЛ она чувствуется больше. Кстати, поделитесь как вы время засекаете?
  7  Мехрдоди Одил(ТРГИ), 06 января 2010 г. 19:54:21
      ах да когда я писал о 0.923 и 1.062, то конечно же 1-ая оценка собственная ф-я а 2-я для стловского.
но все равно отл!!!!!
  8  Мехрдоди Одил(ТРГИ), 06 января 2010 г. 19:52:02
      а вот если написать иф( а не создавать свою ф-ю) то пашет 0.534 сек. при 100 лимонах
  9  Мехрдоди Одил(ТРГИ), 06 января 2010 г. 19:49:48
      пишу быструю сорт. ли стл юзаю.
"если хотите сравнить обращение к stl попробуйте написать руками min() и сравнить со встроенным )"
ну сравнил, нормальная разница при 100 лимонах один пашет 0.923 а другой 1.062. нормально!!!
  10  Бабушкин Олег, 06 января 2010 г. 19:17:29
      Не знаю как вы, а я в олимпиадном программировании пишу merg или встроенную юзаю...
P.S а вы?)
  11  Бабушкин Олег, 06 января 2010 г. 19:15:17
      Дело в том что если вы напишите то же самое что и в stl то у вас будет работать быстрее чем встроенное, но в данном случае sort эфективнее чес быстрая сортировка.
P.S и вообще быстрая на всех единицах в квадрат вырождается.
P.P.S если хотите сравнить обращение к stl попробуйте написать руками min() и сравнить со встроенным )
  12  Мехрдоди Одил(ТРГИ), 06 января 2010 г. 17:57:30
      не верьте никому:) сами эксперемент проведите на своем компе
  13  Головка от руля, 06 января 2010 г. 17:25:42
      У всех разные мнения.
Видел на каком то сайте таблицу там ручная выигрывовала.
  14  Мехрдоди Одил(ТРГИ), 06 января 2010 г. 17:00:45
      неааааа!
для 10 лимнов ручная работает 1.15 а стловская 0.92
"говорят что он дольше работает"
я слышал тоже самое тока наоборот, типа если у нее там глубина рекурсии слишком большая будет то она что-то там начинает делать и быстрее будет работать...
  15  Мехрдоди Одил(ТРГИ), 06 января 2010 г. 16:55:34
      мало ли что говорят, впрочем ща я проведу эксперемент...
  16  Головка от руля, 06 января 2010 г. 16:50:53
      Да, знаю, но говорят что он дольше работает чем собственно написанная функция.
  17  Мехрдоди Одил(ТРГИ), 06 января 2010 г. 16:39:48
      есть ещё готовая ф-я в algorithm, пишите sort(a+1,a+n+1) он вам сортирует a[1]...a[n]
  18  Головка от руля, 06 января 2010 г. 16:39:32
      Спасибо большое
  19  Мехрдоди Одил(ТРГИ), 06 января 2010 г. 16:38:49
      #include<iostream>
using namespace std;
void sort(int *a,int l,int r)
{
int i=l,j=r,x=a[(l+r)/2];
do{
while(a[i]<x) i++;
while (x<a[j]) j--;
if (i<=j)
{
swap(a[i],a[j]);
i++;j--;
}

}while(i<=j);
if (i<r) sort(a,i,r);
if (l<j) sort(a,l,j);

}
int main()
{
int j,n,i,a[100];
cin>>n;
for (i=1;i<=n;i++)
cin>>a[i];

sort(a,1,n);
for (i=1;i<=n;i++)
cout<<a[i]<<' ';
}
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru