Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
_Kate_
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 92
Записей в блоге: 1
#1

Как определить количество перестановок и сравнений - C++

09.10.2012, 21:30. Просмотров 1770. Ответов 6
Метки нет (Все метки)

У меня есть алгоритм Quicksort как определить количество перестановок и сравнений??
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
void quickSort(int arr[], int left, int right) {
   int i = left, j = right;
   int tmp;
   int pivot = arr[(left + right) / 2];
/* partition */
    while (i <= j) {
    while (arr[i] < pivot)
   i++;
   while (arr[j] > pivot)
   j--;
   if (i <= j) {
  tmp = arr[i];
  arr[i] = arr[j];
  arr[j] = tmp;
  i++;
  j--;}};
   /* recursion */
      if (left < j)
      quickSort(arr, left, j);
      if (i < right)
         quickSort(arr, i, right);}
int main(){
    setlocale(LC_CTYPE,"Russian");
    int num;
    cout << "Колво элементов: ";
    cin >> num; 
 
    int *mass = new int[num]; 
    srand((unsigned)time(NULL));
 for (int i = 0; i < num; i++) {
        mass[i] = rand()%20+100;
        cout<<mass[i]<<" ";  }
 cout<<endl;
 cout<<endl;
 
    getch();
    cout<<"Quicksorted array:"<<endl;
clock_t t0 = clock();
    quickSort(mass,0, num-1);//функция квиксорта.
    for (int i=0;i<num;i++){
        cout<<mass[i]<<"\t";}
    clock_t t1 = clock();
    cout<<endl;
        cout << "time: " << (double)(t1 - t0) / CLOCKS_PER_SEC << endl;
 
    getch();
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2012, 21:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как определить количество перестановок и сравнений (C++):

Как определить количество перестановок и сравнений в выборочной сортировке - C++
void choicesSort(int* Array, int length_array) { for (int repeat_counter(0); repeat_counter &lt; length_array; repeat_counter++) ...

Как определить количество сравнений и перестановок в быстрой сортировке массива - C++
Пробовал сделать счётчики, но они выводили кол-ва для сортировке всех подмассивов, а как вывести кол-во всех перестановок и сравнений за...

Как найти в этой сортировке количество перестановок и сравнений? - C++
Как найти в этой сортировке количество перестановок и сравнений? void InsertSort(int *mas, int N) //сортировка вставками { int...

Как найти в данной сортировке количество перестановок и сравнений? - C++
void quicksort(int *mas, int first, int last) { int mid, count, m=0; int f=first, l=last; int count_compare=0, count_swap=0; ...

Количество сравнений/перестановок в сортировке естественным слиянием - C++
Добрый день ! Никак не могу понять как создать счётчик и куда его вставить , лазил по форумах и не нашел всё равно , помогите , если кто-то...

Посчитать количество сравнений и перестановок в сортировке выбором - C++
Доброго времени суток, столкнулся с проблемой, не знаю куда поставить счетчики на сравнения и перестановки в сортировке выбором, уже всяко...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
09.10.2012, 21:40 #2
Тебе нужна характеристика производительности быстрой сортировки?
0
_Kate_
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 92
Записей в блоге: 1
09.10.2012, 21:44  [ТС] #3
да,вроде она я на википедии смотрела но не увидела.
0
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
09.10.2012, 21:52 #4
В умной книжке сказано что быстрая сортировка в худшем случае выполняет порядка N^2/2 сравнений

Добавлено через 5 минут
Вот такая ещё информация, быстрая сортировка в среднем выполняет порядка 2N Ln N сравнений.
Ln - наверное это натуральный логарифм.
1
_Kate_
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 92
Записей в блоге: 1
09.10.2012, 23:02  [ТС] #5
а колво перестановок?
0
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
09.10.2012, 23:15 #6
Тебе надо именно знать количество перестановок?

Добавлено через 8 минут
http://codelab.ru/task/quick_sort_benchmarks/ здесь посмотри
0
_Kate_
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 92
Записей в блоге: 1
09.10.2012, 23:58  [ТС] #7
да именно колво перестановок, а то для сортировками вставок к примеру есть формула и для это должна существовать

Добавлено через 32 минуты
а как програмно осуществить не подскажите?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2012, 23:58
Привет! Вот еще темы с ответами:

Нужно вставить счетчик, чтобы посчитать количество сравнений и перестановок - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int main() { int arr, a, b, i, size; size = 100; //...

Алгоритм быстрой сортировки - посчитать количество перестановок и сравнений элементов массивов - C++
Помогите пожалуйста в алгоритме быстрой сортировки посчитать количество перестановок и сравнений элементов массивов. Не могу понять куда...

Где правильно ставить счетчики сравнений и перестановок, и как считать сложность этих алгоритмов? - C++
написал код двух сортировок, но не уверен, что правильно проставлены счетчики.#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;conio.h&gt; ...

Быстрая сортировка, неправильный подсчет количества сравнений и перестановок - C++
Сортирует верно (по убыванию элементов в строке), а кол-во сравнений и перестановок выдает ошибочно В первом скрине показывается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.10.2012, 23:58
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru