码迷,mamicode.com
首页 > 数据库 > 详细

oracle 归并

时间:2015-02-04 16:57:29      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:oracle

DECLARE
   TYPE num_tt IS TABLE OF INT;
   num_t1 num_tt:=num_tt();
   num_t2 num_tt:=num_tt();
   num_t3 num_tt:=num_tt();
   i_1 INT := 1;
   j_1 INT := 1;
   d_1 INT := 1;
   PROCEDURE quick_sort(arr_t IN OUT num_tt, i IN INT, j IN INT)
   AS
      tmp_i INT := i;
      tmp_j INT := j;
      fir_num INT ;
   BEGIN
      IF(i < j) THEN
       fir_num := arr_t(tmp_i);
       WHILE(tmp_i < tmp_j) LOOP
          WHILE(tmp_i < tmp_j AND fir_num < arr_t(tmp_j)) LOOP
             tmp_j := tmp_j - 1;
          END LOOP;
          arr_t(tmp_i):=arr_t(tmp_j);
          WHILE(tmp_i < tmp_j AND fir_num > arr_t(tmp_i)) LOOP
              tmp_i := tmp_i + 1;
          END LOOP;
          arr_t(tmp_j):=arr_t(tmp_i);
       END LOOP;
       arr_t(tmp_i) := fir_num;
       quick_sort(arr_t, i,tmp_i-1);
       quick_sort(arr_t, tmp_i+1, j);
     END IF;
   END quick_sort;
BEGIN
   num_t1.extend(20);
   num_t2.extend(20);
   num_t3.extend(num_t1.count+num_t2.count);
   FOR i IN 1..20 LOOP
     num_t1(i) := trunc(dbms_random.value(200,100000));
   END LOOP;
   dbms_output.put_line(‘num_t1:‘);
   quick_sort(num_t1, 1, num_t1.count);
   FOR i IN 1..num_t1.count LOOP
     dbms_output.put_line(num_t1(i)||‘,‘);
   END LOOP;
   FOR i IN 1..20 LOOP
     num_t2(i) := trunc(dbms_random.value(200,100000));
   END LOOP;
   dbms_output.put_line(‘num_t2:‘);
   quick_sort(num_t2, 1, num_t2.count);
   FOR i IN 1..num_t2.count LOOP
     dbms_output.put_line(num_t2(i)||‘,‘);
   END LOOP;
   WHILE(i_1 <= num_t1.count AND j_1 <= num_t2.count) LOOP
     IF(num_t1(i_1) > num_t2(j_1)) THEN
        num_t3(d_1) := num_t2(j_1);
        j_1 := j_1 + 1;
     ELSE
        num_t3(d_1) := num_t1(i_1);
        i_1 := i_1 + 1;
     END IF;
     d_1 := d_1 + 1;
   END LOOP;
   IF(i_1<=num_t1.count) THEN
     FOR i IN i_1..num_t1.count LOOP
       num_t3(d_1) := num_t1(i);
       d_1 := d_1+1;
     END LOOP;
   ELSE
      FOR i IN j_1..num_t2.count LOOP
        num_t3(d_1) := num_t2(i);
        d_1 := d_1+1;
      END LOOP;
   END IF;
   dbms_output.put_line(‘num_t3:‘); 
    FOR i IN 1..num_t3.count LOOP
     dbms_output.put_line(num_t3(i)||‘,‘);
   END LOOP;   
END;
  
  
  

本文出自 “welcome” 博客,请务必保留此出处http://friendsforever.blog.51cto.com/3916357/1611466

oracle 归并

标签:oracle

原文地址:http://friendsforever.blog.51cto.com/3916357/1611466

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!