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

Функция реверса строки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Очистка памяти http://www.cyberforum.ru/cpp-beginners/thread186468.html
Вот сделал лабу и все работает отлично, но осталось последнее new выделяет память мне нужно добавить функцию которая будет вызыватся в конце и чистить память но как это сделать хз пробовал не...
C++ Можно ли на С++ как-то свернуть стек для выхода из рекурсии, а не последовательно выходить из нее? Вот такой пример кода: QuickSort::QuickSort(void) { deeps = 0; needsShuffl = false; } QuickSort::~QuickSort(void) { http://www.cyberforum.ru/cpp-beginners/thread186462.html
C++ Выручайте друзья
Вопрос в следующем. У меня есть EXEшная фаил который работает под Windows Mobile, в работе этой программы мне надо отключить функцию "поверх всех окон" ( т.е. не могу ее свернуть). В одном из режимов...
Перевод чисел и разных систем C++
Доброго всем времени суток задали задачку мне,а как решить не знаю,мне нужно сделать программу перевода числе из двуичной системы в десятиричную.Самая больая проблема,что мы только начали курс по С++...
C++ Рефлекшн http://www.cyberforum.ru/cpp-beginners/thread186454.html
Какие средства для рефлекшена есть в С++. Я понимаю, что никаких. Но может все же можно как-нибудь исхитрится. Предлагайте любые, даже самые немыслимые, способы. Заранее спасибо. PS: другие языки не...
C++ Очередь Задача проги сделать очередь, по сути прога написана по лекции, но выдает ошибки с преобразованием параметра, понимаю, что ошибки глупые, но не могу вспомнить как их решить #include "stdafx.h"... подробнее

Показать сообщение отдельно
Zilon
5 / 5 / 0
Регистрация: 05.11.2010
Сообщений: 60
06.11.2010, 01:52  [ТС]
Вобщем то начинали мы с интересных вариантов реализации.
А что оптимизирование - это уже частное мнение каждого.
Наконец подводя черту под тем что быстрее выкладываю результаты "критерия истины":

Эксперимент был проведен на таком коде:

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <locale.h>
 
 
void revertArray(int arr[], int N);
void revertPointer(int arr[], int N);
void revertEqu(int arr[], int N);
 
 
int main (void)
{
    clock_t start, finish;
    int i;
    int N = 1024 * 1024 * 4;
 
    int* arr = (int*) calloc(1, N * sizeof(int));
    if(NULL == arr)
    {
        printf("Allocation memory error\n");
        system("pause");
        return 1;
    }
 
    system("pause");
 
    srand(5);
    for(i = 0; i < N; i++)
        arr[i] = rand();
    
    //array
    printf("array\n");
    start = clock();
 
    for(i = 0; i < 200; i++)
        revertArray(arr, N);
 
    finish = clock();
    printf("for array       time left - %d\n", (int) (finish-start));
 
    //pointers_XOR
    printf("pointers_XOR\n");
    start = clock();
    
    for(i = 0; i < 200; i++)
        revertPointer(arr, N);
 
    finish = clock();
    printf("for pointers_XOR   time left - %d\n", (int) (finish-start));
 
    //pointers_=
    printf("pointers_=\n");
    start = clock();
    
    for(i = 0; i < 200; i++)
        revertEqu(arr, N);
 
    finish = clock();
    printf("for pointers_=    time left - %d\n", (int) (finish-start));
 
    free(arr);
 
    system("pause");
    return 0;
}
 
void revertPointer(int arr[], int N)
{
        int* left = arr;
        int* right = &arr[N - 1];
 
        while(left < right)
        {
                *left ^= *right;
                *right ^= *left;
                *(left++) ^= *(right--);
        }
}
 
void revertEqu(int arr[], int N)
{
        int* left = arr;
        int* right = &arr[N - 1];
        int temp;
 
        while(left < right)
        {
            temp = *left;
            *left++ = *right;
            *right-- = temp;
        }
}
 
 
void revertArray(int arr[], int N)
{
    int tmp;
    int i = 0;
    int j = N - 1;
 
    while( j > i ){
        tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
 
        i++;
        j--;
    }
}
Параметры и результаты в картинках ниже:
0
Миниатюры
Функция реверса строки   Функция реверса строки  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru