powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Pomoghite s FUNCTION
6 сообщений из 6, страница 1 из 1
Pomoghite s FUNCTION
    #32108158
gda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vsem privet !!!

Vot text functii, ona compiliruetsea no cogda I ee vipolniau ona rugaetsea na
if tab(j-1) > tab(j) then govorit tipa dannie ne naideni, ne mogu poniati pocemu, please pomoghite.

-----------------------------------------------------------------------
create or replace function BubbleSort (str VARCHAR2) return varchar2 is

Type TabNameTyp is table of VARCHAR2(250) index by binary_integer;
tab TabNameTyp;

temp CHAR;
Result VARCHAR2(250);

begin

-- introducerea elementelor stringului 'str' in tabela
for i in 1..length(str) loop
tab(i) := substr(str,i,1);
end loop;

-- sortarea tabelului dupa metoda Bubble
for i in 1..length(str)-1 loop

for j in REVERSE i..length(str)-2 loop
if tab(j-1) > tab(j) then -- RUGAETSEA POCEMU
temp := tab(j-1);
tab(j-1) := tab(j);
tab(j) := temp;

end if;
end loop;

end loop;

-- Formarea stringului sortat
Result := tab(1);
for i in 2..length(str) loop
Result := Result || tab(i);
end loop;

return (Result);
end BubbleSort;

Za ranie spasibo ...
...
Рейтинг: 0 / 0
Pomoghite s FUNCTION
    #32108219
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"for j in REVERSE i..length(str)-2 loop
if tab(j-1) > tab(j) then -- RUGAETSEA POCEMU "

Когда у тебя i=1 и соответственно j=1 у тебя получается ссылка на элемент
tab(0). Наименьшем индексом может быть 1, то есть tab(1)
...
Рейтинг: 0 / 0
Pomoghite s FUNCTION
    #32108243
Фотография MaxU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если тебе это для работы, а не для лабороторных работ, то:
1. надо сильно оптимизировать функцию, например все вызовы "length(str)" в циклах заменить на переменную, кот. до этого проинициализировать...
2. пузырек(и его брат двунаправленный пузырек) является одним из самых медленных алгоритмов сортировки...
возьми хотя бы "выборочную" сортировку...

вот не поленился и написал:
Код: plaintext
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.
create or replace function select_sort (str varchar2)
	return varchar2
as
  type tabnametyp is table of varchar2 ( 250 )
      index by binary_integer;
  tab      tabnametyp;
  ttt	char;
  ss	varchar2( 1000 )	:= '';
  len	number;
begin
        len := length(str);

        for x in  1  .. len
        loop
	   tab (x) := substr(str,x, 1 );
        end loop;

	for i in  1  .. len -  1 
	loop
	   for j in reverse i+ 1  .. len
	   loop
	      if (tab (i) > tab (j)) then
	         ttt := tab (i);
	         tab (i) := tab (j);
	         tab (j) := ttt;
	      end if;
	   end loop;
	end loop;

	for ii in  1  .. len
	loop
	   ss := ss || tab (ii);
	end loop;

	return ss;
end;
/
show error;


удачи !!!
:)
...
Рейтинг: 0 / 0
Pomoghite s FUNCTION
    #32108275
gda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rebeat spasibo... vi pomogli poneati moiu osibcu, zaputalsea I v atih tablicinih indecsah. :) Net ne dly labor. A dly cego obevliati dly length(str) peremenuiu ona i bez peremenoi rabotaet. Da pridetsea poprobuvati i drughie metodi sort.
...
Рейтинг: 0 / 0
Pomoghite s FUNCTION
    #32108286
Фотография MaxU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> A dly cego obevliati dly length(str) peremenuiu ona i bez peremenoi rabotaet.

посчитай сколько раз вызовется "length(str)" для строки из 200 символов, например, зачем лишний раз напрягать и без того несчастный CPU ?

;)
...
Рейтинг: 0 / 0
Pomoghite s FUNCTION
    #32108289
gda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:) da I pro CPU ne podumal
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Pomoghite s FUNCTION
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]