(资料图)
【Oracle】使用PL/SQL实现冒泡排序一般来说,SQL要排序的话直接使用order by即可
不一般来说,就是瞎搞,正好也可以巩固自己的数据结构基础
存储包内容如下
规范:
create or replace package data_structure_pkg is procedure get_data(p_data varchar2);end data_structure_pkg;
体:
create or replace package body data_structure_pkg is --------------------以下为冒泡排序部分---------------------- --定义一个存储数据的临时表 type numtable is table of long index by binary_integer; --主方法 procedure get_data(p_data varchar2) is v_data numtable; n number := 1; p_num number; begin --以;作为分隔符,将数字进行分离 for sub_data in (select tt.data as sdata from (select regexp_substr(p_data, "[^;]+", 1, level) data from tablet bd connect by level <= regexp_count(p_data, ";") + 1) tt where rownum <= regexp_count(p_data, ";") + 1) loop --放入临时表 v_data(n) := sub_data.sdata; --打印出来原顺序的数据 dbms_output.put_line("排序前第" || n || "位:" || v_data(n) || "|"); --递增 n := n + 1; end loop; dbms_output.put_line("-------------------------------------"); --排序 for i in reverse 1 .. v_data.count loop --依次提取i次下标位数字 for j in reverse (i + 1) .. v_data.count loop --比较 if v_data(i) > v_data(j) then p_num := to_number(v_data(i)); v_data(i) := v_data(j); v_data(j) := p_num; end if; end loop; end loop; --打印出来排序以后的数据 for i in 1 .. v_data.count loop dbms_output.put_line("排序后第" || i || "位:" || v_data(i) || "|"); end loop; end get_data;end data_structure_pkg;
输入字符串2;1;3;4;6;5;7;8;9
得到结果:
关键词:
56位残疾人士登上黄山 互利互勉共建生活希望 中国新闻网
永州市1至4月市场主体发展取得突破性进展 永州日报
国家邮政局再部署北京邮政快递业疫情防控工作 中工网-工人日报
江西前4月社会消费品零售总额3742.8亿元 增速全国第一 江西新闻客户端
石城县积极构建企业服务全生命周期“绿色通道” 赣南日报-客家新闻网
中利集团董事长被内部通报批评 并罚款100万元 中国基金报
细分市场规模不大 兴协和更新招股书 投资者网