在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]