plsql 排序_PLSQL实现排序(冒泡、选择、快速)

本文介绍了如何在PLSQL中实现三种排序算法:冒泡排序、选择排序和快速排序。提供了详细的函数和存储过程实现,包括快速排序的递归调用。示例代码展示了如何对数字字符串进行排序并返回排序后的结果。
摘要由CSDN通过智能技术生成

转载 http://duqiangatom.blog.163.com/blog/static/11502518201051181157657/

1、起泡排序法(平均时间复杂)

分析:若是正序,则j=n-1趟排序,每次进行n-j次比较,且不移动记录;

反之,要进行(n-1 + 1 ) * (n-1)  /2次;总的时间复杂度为O(n平方)

create or replace function f_bible_sort(p_numbers in varchar2) return varchar2 is

Result varchar2(4000);

type t_table is table of char index by pls_integer;

v_tab t_table;

v_tmp char;

begin

for i in 1 .. nvl(length(p_numbers), 0) loop

v_tab(i) := substr(p_numbers, i, 1);

end loop;

for p in 1 .. nvl(length(p_numbers), 0) - 1 loop

for q in reverse p .. nvl(length(p_numbers), 0)-1 loop ---一定要从冒泡轨迹的起点开始比较。

if v_tab(q) <= v_tab(q+1) then

v_tmp := v_tab(q);

v_tab(q) := v_tab(q+1);

v_tab(q+1) := v_tmp;

end if;

end loop;

end loop;

for i in 1 .. nvl(length(p_numbers), 0) loop

Result := Result || v_tab(i);

end loop;

return(Result);

end f_bible_sort;

2、选择排序法

create or replace function f_choice_sort(p_numbers in varchar2) return varchar2 is

Result varcha

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值