当前位置:滚动 > >正文

【Oracle】使用PL/SQL实现冒泡排序|视点


(资料图片仅供参考)

【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

得到结果:

标签:

推荐阅读