在java中输入向量时如何对数字进行排序

在java中输入向量时如何对数字进行排序,java,arrays,algorithm,sorting,vector,Java,Arrays,Algorithm,Sorting,Vector,在输入向量之前,我想按排序方式添加数字。但是结果不对,我很困惑问题出在哪里输出如下所示。 import java.util.Vector; public class Test { public static void main(String ar[]){ //Numbers to enter in vector int[] number = {5,2,98,3,10,1}; Vector<Integer> v = new Vector<Int

在输入向量之前,我想按排序方式添加数字。但是结果不对,我很困惑问题出在哪里输出如下所示。

import java.util.Vector;

public class Test {
    public static void main(String ar[]){
    //Numbers to enter in vector
    int[] number = {5,2,98,3,10,1};

    Vector<Integer> v = new Vector<Integer>();

    v.add(number[0]);
    for(int i=1;i<number.length;i++){
            for(int j=v.size();j>0;j--){
                System.out.println("Entered: "+number[i]);
                if(number[i] <= v.get(j-1)){
                    v.add(j-1,number[i]);
                    break;
                }else{
                    v.add(j,number[i]);
                    break;
                }
            }
        }
    for(int s:v)
        System.out.print(s + " ");
  }
}
我想使用一些算法进行排序,而不使用任何内置方法。

import java.util.Vector;

public class Test {
    public static void main(String ar[]){
    //Numbers to enter in vector
    int[] number = {5,2,98,3,10,1};

    Vector<Integer> v = new Vector<Integer>();

    v.add(number[0]);
    for(int i=1;i<number.length;i++){
            for(int j=v.size();j>0;j--){
                System.out.println("Entered: "+number[i]);
                if(number[i] <= v.get(j-1)){
                    v.add(j-1,number[i]);
                    break;
                }else{
                    v.add(j,number[i]);
                    break;
                }
            }
        }
    for(int s:v)
        System.out.print(s + " ");
  }
}
import java.util.Vector;
公开课考试{
公共静态void main(字符串ar[]{
//要在矢量中输入的数字
int[]数={5,2,98,3,10,1};
向量v=新向量();
v、 添加(编号[0]);
对于(int i=1;i0;j--){
系统输出打印项次(“输入:“+编号[i]);
如果(数字[i]您有第二个(内部)
用于基于变量
j
循环,但该“循环”只会执行一次。循环
j
内的两个条件都会导致循环退出(
中断;


当您添加每个数字时,唯一的可能是last或next to last。

您的内部for循环实际上不会循环。
无论条件如何,您的内部循环似乎不会循环超过一次。这就是为什么钥匙没有插入正确的位置

一个更简洁的解决方案是

public class Test {
    public static void main(String ar[]){
    //Numbers to enter in vector
    int[] number = {5,2,98,3,10,1};

    Vector<Integer> v = new Vector<Integer>();
    v.setSize(number.length);
    v[0] = number[0];

    for(int i=1, vSize = 1; i < number.length; i++, vSize++){
          int j = 0, k = 0; 
          for(j = 0; j < vSize; j++) {
               if(v[j] < number[i]) {
                  break;
           }
           for(k = vSize; k > j; k--) {
               v[k] = v[k -1];
           }
           v[k] = number[i];
    }
    for(int s:v)
        System.out.print(s + " ");
  }
}
公共类测试{
公共静态void main(字符串ar[]{
//要在矢量中输入的数字
int[]数={5,2,98,3,10,1};
向量v=新向量();
v、 设置大小(数字、长度);
v[0]=数字[0];
对于(int i=1,vSize=1;ij;k--){
v[k]=v[k-1];
}
v[k]=数量[i];
}
对于(整数s:v)
系统输出打印(s+“”);
}
}

另一个简单的解决方案是:

import java.util.Vector;

public class Test {
    public static void main(String ar[]){
    //Numbers to enter in vector
    int[] number = {5,2,98,3,10,1};

    Vector<Integer> v = new Vector<Integer>();

    v.add(number[0]);
    for(int i=1, j;i<number.length;i++){                      //j declared here for better scope
            for(j=v.size();j>0 && v.get(j-1)>number[i] ;j--); //<-- some changes here,
            v.add(j,number[i]);                               //<-- and here
            }
        }
    for(int s:v)
        System.out.print(s + " ");
  }
}
import java.util.Vector;
公开课考试{
公共静态void main(字符串ar[]{
//要在矢量中输入的数字
int[]数={5,2,98,3,10,1};
向量v=新向量();
v、 添加(编号[0]);

for(int i=1,j;i0&&v.get(j-1)>数字[i];j-);//提示:嵌套的for循环执行1次,因为if或else breakI添加了这个原因,重复的值被添加到向量中。当你在
j
上循环时,当你添加数字时——是的——你确实想
中断;
(否则你会得到重复的值)。但是当
number[i]