Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/27: Рейтинг темы: голосов - 27, средняя оценка - 4.74
Asttaroth.kun

Быстрая сортировка (Хоара) для cell arrays

29.06.2009, 16:45. Показов 5257. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача: отсортировать методом Хоара заданный массив ячеек по заданным параметрам:
1. кол-во пятерок
2. кол-во четверок
3. ФИО

Массив:
К.Гр.ФИО5432
1НПОПотравный В. В.2351
2НПОБаратынская Е. В.1433
1ПМТошев А. К.4331
2ПМХлюстин С. А.1154
3ФИТПроцеров А. Ю.5420
4НПОКазимирский М. П.2342
2ФИТГорохов Ю. С.4421

Добавлено через 1 минуту 20 секунд
Вот мой код программы:

Matlab M
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
function List=uuu
fid=fopen('spisok.txt','rt+');
i=1; 
while feof(fid)==0
    List(i).krs=fscanf(fid,'%d',1);
    List(i).gro=fscanf(fid,'%s',1);
    List(i).fio=fscanf(fid,'%s',3);
    List(i).fiv=fscanf(fid,'%d',1);
    List(i).fou=fscanf(fid,'%d',1);
    List(i).thr=fscanf(fid,'%d',1);
    List(i).two=fscanf(fid,'%d',1);
    i=i+1;
end
fclose(fid);
 
% Мастерим ключ для каждой записи
[m n]=size(List);
for i=1:n-1
    List(i).key=zeros(1,22);
    List(i).key(1:2)=[List(i).fiv List(i).fou];
    List(i).key(3:length(List(i).fio)+2)=int16(List(i).fio);
end
List=qiqsort(List,1,n-1);
end
 
% Функция сравнения двух записей по их ключам
function BOO=menee(List,a,b)
A=List(a).key;
B=List(b).key;
c=A-B;
for i=1:length(c)
    if c(i)<0
        BOO=1;
        break;
    elseif c(i)>0
        BOO=0;
        break
    end
    BOO=0;
end
end
 
% Функция быстрой сортировки
function List=qiqsort(List,l,r)
i=l; j=r; 
m=ceil(abs((r-l+1)*cos(random('gam',10,1000)))); % Возвращает произвольное целое m из [1;7]
disp(m); % Контроль случая
while i<=j
    while menee(List,i,m)==1; i=i+1; end
    while menee(List,m,j)==1; j=j-1; end
        if i<=j
            if menee(List,j,i)==1
                buff=List(i); List(i)=List(j); List(j).key=buff;
            end
            i=i+1; j=j-1;
        end
end
if l<j; r=j; qiqsort(l,r); end
if i<r; l=i; qiqsort(l,r); end
end
Добавлено через 10 минут 55 секунд
И вот какие проблемы возникают:
>>uuu
1

??? Input argument "r" is undefined.

Error in ==> uuu>qiqsort at 45
i=l; j=r;

Error in ==> uuu>qiqsort at 59
if l<j; r=j; qiqsort(l,r); end

Error in ==> uuu at 23
List=qiqsort(List,1,n-1);


>>uuu
2

??? Input argument "r" is undefined.

Error in ==> uuu>qiqsort at 45
i=l; j=r;

Error in ==> uuu>qiqsort at 59
if l<j; r=j; qiqsort(l,r); end

Error in ==> uuu at 23
List=qiqsort(List,1,n-1);


>>uuu
3

??? Input argument "r" is undefined.

Error in ==> uuu>qiqsort at 45
i=l; j=r;

Error in ==> uuu>qiqsort at 59
if l<j; r=j; qiqsort(l,r); end

Error in ==> uuu at 23
List=qiqsort(List,1,n-1);


>> uuu
4

??? Undefined function or method 'minus' for input arguments of type 'struct'.

Error in ==> uuu>menee at 30
c=A-B;

Error in ==> uuu>qiqsort at 50
while menee(List,i,m)==1; i=i+1; end

Error in ==> uuu at 23
List=qiqsort(List,1,n-1);


>> uuu
5

??? Undefined function or method 'minus' for input arguments of type 'struct'.

Error in ==> uuu>menee at 30
c=A-B;

Error in ==> uuu>qiqsort at 50
while menee(List,i,m)==1; i=i+1; end

Error in ==> uuu at 23
List=qiqsort(List,1,n-1);

>> uuu
6

??? Undefined function or method 'minus' for input arguments of type 'struct'.

Error in ==> uuu>menee at 30
c=A-B;

Error in ==> uuu>qiqsort at 50
while menee(List,i,m)==1; i=i+1; end

Error in ==> uuu at 23
List=qiqsort(List,1,n-1);


>> uuu
7

??? Undefined function or method 'minus' for input arguments of type 'struct'.

Error in ==> uuu>menee at 30
c=A-B;

Error in ==> uuu>qiqsort at 50
while menee(List,i,m)==1; i=i+1; end

Error in ==> uuu at 23
List=qiqsort(List,1,n-1);
Понимаю, что делано через одно место, но все же:
1. Где тут ошибка и как ее исправить?
или
2. Как решить эту задачу в другом представлении?

Добавлено через 7 часов 15 минут 50 секунд
Проблема решена:
Matlab M
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
% Функция быстрой сортировки
function List=qiqsort(List,l,r,varargin)
i=l; j=r; 
if nargin==4
    direc=varargin{1};
else
    direc=1;
end
 
while i~=j
    if menee(List,j,i)
        buf=List(i);
        List(i)=List(j);
        List(j)=buf;
        direc =~direc;
    end
    if direc ==1
        j=j-1;
    else
        i=i+1;
    end
end
 
if i-1-l>1
    direc =~direc;
    List=qiqsort(List,l,i-1,direc);
end
if r-i>1
    direc =~direc;
    List=qiqsort(List,i,r,direc);
end
end
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.06.2009, 16:45
Ответы с готовыми решениями:

Ошибка ? Nonscalar arrays of function handles are not allowed; use cell arrays instead
Вот код: function coeff=kerim_LL(x,L,ydata,w,t,f,step) for n=1:length(step); if step(1,n)+length(L)-1&gt;length(ydata) ...

Быстрая сортировка (сортировка Хоара) для связных списков
есть у кого готовый алгоритм? или подскажите как реализовать

Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива
Мне нужно отсортировать фрагмент массива, расположенный между первым и последним отрицательным элементом. Немогу понять как устоновить...

1
Noi
17.09.2010, 18:19
помогите сделать эту задачу в maple!!!!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.09.2010, 18:19
Помогаю со студенческими работами здесь

Быстрая сортировка Хоара
Пом-гите решить, заранее благодарен Билет 4 1 Быстрая сортировка Хоара.

Быстрая сортировка Хоара
Быстрая сортировка Хоара (QSort) разбивает массив в ходе сортировки до тех пор, пока размер частичного подмассива не станет равен...

Быстрая сортировка Хоара
Здрасьте. Вот писал быструю сортировку Хоара на Си, вроде все сделал, а на практике она часто не полностью сортирует массив, особенно с...

Сортировка Хоара (быстрая сортировка) по убыванию
Помогите найти/написать/понять/отобразить как пишется код для данного задания или хотя бы часть кода в C++ Builder Найти в заданной...

C/C++ FAQ :: Быстрая сортировка (сортировка Хоара)
Вопрос, скорее академический, по мотивам реализации. Вот в faq приведена реализация этого метода сортировки на C++. В коде есть следующий...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru