0

*更新:已解决做了一个深拷贝,感谢帮助

我正在使用整数向量来模拟一些排序算法,当我将数字插入测试向量并打乱顺序并将其传递给排序函数时,如果我将 void 排序函数传递给相同的向量,则当向量被排序时先前传递新排序向量的函数被传递给它后面的函数,因为它已经排序我无法显示排序过程。例如在我的以下代码中

@SuppressWarnings("unchecked") // Removes error given at when adding elems to int_vec
    public static void CreateVec (int array_len)
    {
      Vector <Integer> int_vec = new Vector(array_len);
      int temp_int = 1;
      int low_bound = 0;
      int high_bound = array_len - 1;

          for(int i = 0; i<array_len; i++)
          {
              int_vec.addElement(temp_int);// creating a vec in respect to array len
              temp_int ++;
          }

             Collections.shuffle(int_vec);
             System.out.println("OG vec: " + int_vec); //original vector (random order)
             BubbleSort(int_vec,array_len); //sending int_vec to bubble sort
             InsertionSort(int_vec,array_len); // retrieves newly sorted vector sorted from BubbleSort (problem)

    }

所以我的问题是,我怎样才能继续发送我的测试向量(int_vec)和随机排序的元素,而不是继续将排序的向量发送到其他算法。请注意,我正确实现了这些算法,如果我注释掉对其他算法函数的函数调用,它就可以工作。

4

2 回答 2

2

创建int_vecwithnew Vector<Integer>(int_vec)的副本并将副本传递给您的排序方法。这样,只有副本会被排序,并且int_vec仍然会随机排序,并准备再次复制以进行下一个排序方法。

是的,这是一个浅拷贝,但这里不需要深拷贝。

于 2013-03-26T23:54:53.947 回答
0

it doesnt seem to be working i did the following

Vector <Integer> int_vec = new Vector(array_len);    
Vector <Integer> copy_bub = new Vector <Integer> (int_vec);
//...//
BubbleSort(int_vec,array_len);
InsertionSort(copy_bub,array_len);

and this is the output

Output:   
    OG vec: [4, 8, 9, 6, 10, 2, 1, 5, 3, 7]
    Copy vec: [4, 8, 9, 6, 10, 2, 1, 5, 3, 7]
    Bubble Vec: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    Insertion Vec: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    Insertion Vec: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    Insertion Vec: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    Insertion Vec: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    Insertion Vec: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    Insertion Vec: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    Insertion Vec: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    Insertion Vec: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    Insertion Vec: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    Insertion Vec: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
于 2013-03-27T03:02:42.650 回答