Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Pomoghite s FUNCTION / 6 сообщений из 6, страница 1 из 1
18.02.2003, 16:33
    #32108158
gda
gda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomoghite s FUNCTION
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
18.02.2003, 17:30
    #32108219
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomoghite s FUNCTION
"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
18.02.2003, 17:54
    #32108243
MaxU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomoghite s FUNCTION
если тебе это для работы, а не для лабороторных работ, то:
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
18.02.2003, 18:36
    #32108275
gda
gda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomoghite s FUNCTION
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
18.02.2003, 18:47
    #32108286
MaxU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomoghite s FUNCTION
> A dly cego obevliati dly length(str) peremenuiu ona i bez peremenoi rabotaet.

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

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


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