黑马程序员技术交流社区
标题:
小白刚学到数组,遇到困难,求大神解答
[打印本页]
作者:
java过客
时间:
2015-6-23 10:28
标题:
小白刚学到数组,遇到困难,求大神解答
需求:先将一数组排序,再将一个数插入到该指定数组,要求插入完成后得到的新数组必须是顺序排列的。
我写的代码如下:
import java.util.*;
class Test01{
public static int getIndex(int[] arr,int key){
int max=arr.length-1,min=0,mid;
while(min<=max){
mid = (max+min)>>1;
if(key>arr[mid]){
min = mid+1;
}else if(key<arr[mid]){
max = mid-1;
}else{
return mid;
}
}
return min;
}
public static void print(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
public static int[] newArray(int[] arr,int x,int key){
int[] newarr = new int[arr.length+1];
for(int i=0;i<arr.length;i++){
if(i>=0 && i<x){
newarr[i] = arr[i];
}else if(i==x){
newarr[x] = key;
}else{
newarr[i+1] = arr[i];
}
}
return newarr;
}
public static void main(String[] args){
int[] arr = {5,4,8,5,2,9,1,2,13,17,7,6,0};
System.out.println("请输入一个数字:");
Scanner input = new Scanner(System.in);
int a = input.nextInt();
java.util.Arrays.sort(arr);
print(arr);
System.out.println();
print(newArray(arr,getIndex(arr,a),a));
System.out.println("\n"+getIndex(arr,a));
}
}
基本是仿照毕老师写的,可是结果是插入的位置正确,就是插入的这个数总是0,求指导
作者:
java过客
时间:
2015-6-23 10:31
在函数newArray中我明明有将key值赋给newarr啊
作者:
黑马无敌
时间:
2015-6-23 11:30
import java.util.Scanner;
class Test01{
public static int getIndex(int[] arr,int key){
int max=arr.length-1,min=0,mid;
while(min<=max){
mid = (max+min)>>1;
if(key>arr[mid]){
min = mid+1;
}else if(key<arr[mid]){
max = mid-1;
}else{
return mid;
}
}
return min;
}
public static void print(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
public static int[] newArray(int[] arr,int x,int key){
int[] newarr = new int[arr.length+1];
for(int i=0;i<arr.length;i++){
if(i>=0 && i<x){
newarr[i] = arr[i];
}else if(i==x){
newarr[i] = key;
newarr[i+1]=arr[i];
}else{
newarr[i+1] = arr[i];
}
}
return newarr;
}
public static void main(String[] args){
int[] arr = {5,4,8,5,2,9,1,2,13,17,7,6,0};
System.out.println("请输入一个数字:");
Scanner input = new Scanner(System.in);
int a = input.nextInt();
java.util.Arrays.sort(arr);
print(arr);
System.out.println();
print(newArray(arr,getIndex(arr,a),a));
System.out.println("\n"+getIndex(arr,a));
}
}
你忽略一个小细节,就是在newArray函数中,当输入的值的位置x等于i时,应该将原来的那个arr[i]赋给newarr[i+1]。
作者:
java过客
时间:
2015-6-23 12:00
哦,我明白了,谢谢啦:)
作者:
fanxin_meng
时间:
2015-6-23 12:07
学习 学习
作者:
林大涛
时间:
2015-6-23 14:32
三楼正解。
作者:
帅帅loyal
时间:
2015-6-23 15:27
我是来学习的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2