(资料图片仅供参考)
【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
得到结果:
标签: