![]() |
Возвращаюсь к опросам....
Цитата:
и бал в минус пойдет а ответ будет верный как выйти из ситуции....? |
Имеет место быть следующее задание:
Вариант задания реализовать в виде функции, использующей для работы со строкой только указатели и операции вида *p++, p++ и т.д.. " Быстрая" сортировка (разделением) с использованием указателей на правую и левую границы массива, текущих указателей на правый и левый элемент и операции сравнения указателей. ------ я не знаю с чего начать. объясните пожалуйста попроще что значит " Быстрая" сортировка (разделением), а я уже на основе этого сам всё сделаю. |
Ето алгоритм QuickSort, читай здесь
|
никак не могу сделать этот квиксорт =\
вот чего я делаю: 1. задаю каким-то хреном середину массива (этот выбор наугад совсем мне не нравится, херня какая-то) 2. затем ищу слева число, больше или равное данному. если не нашёл, то оно получается такое же как и в середине. 3. ищу слева меньшее данного. или опять же ему равное? вот уже из-за этой херни я не вижу там логики. сколько описаний в сети не прочёл - нигде не сказано точно. примеров нормальных вообще нет. сравнил два числа, (если они не равны друг другу), поменял местами. затем снова ищу. и так наверно до тех пор пока они в любом случае не станут равны друг другу. (ну вот такие рассуждения хоть как-то упорядочивают мои мысли. сортируют их блин.) потом в примере написано надо брать середину левой части. опять же наугад. какой идиот это писал? и доводить всё до того, пока левая часть не станет равна одному элементу массива. а что дальше? и как всё это реализовать? помогите, набросайте хоть какой-нить пример нормальный |
да уж, куда этому идиоту хоару до нас...
|
:d
да не хоар идиот, а тот кто учебник писал. там таки и пишут - возьмём наугад.. чо за херня, как можно делать что-то наугад? в топку таких учителей |
наугад, потому что выбор элемента абсолютно никак не влияет на конечную эффективность.
зы наугад читай как произвольным образом. |
вот можно ли это дело изменить так чтобы функция работала только на указателях?
void quicksort(int *array, int start, int stop) { int left = start, right = stop, center = array[(start + stop) / 2]; while(left<right) { while(array[left]<center) left++; while(array[right]>center) right--; if(left<=right) { swap(&array[left], &array[right]); left++; right--; } } if(right>start) quicksort(array, start, right); if(left<stop) quicksort(array, left, stop); } |
array[i] -> *(array+i)
&array[i] -> array+i |
задача: Функция находит в строке заданную подстроку и
возвращает динамический массив указателей на все вхождения этой подстроки. так вот я не знаю, какой размер задать массиву? получается всякая чушь: Код:
#include "stdio.h" |
| Время: 06:06 |