原题是这样.
提供一个已经排序好的数组.(1维),提示用户再输入一个数,然后按序列插入数组中..我自己的代码实现不了 . 有很多问题.. 请高人帮我改下..
import java.util.Arrays;
import java.util.Scanner;
public class ChaRuSort
{
public static void main(String[] args)
{
int[] a = new int[]{1,3,5};
int[] b = new int[10];
for(int i =0;i<a.length;i++)
{
b[i] = a[i];
}
System.out.println("插入前的数组:");
for(int i = 0;i<b.length;i++)
System.out.print(b[i]);
System.out.println();
System.out.println("输入一个数");
int num = new Scanner(System.in).nextInt();
for(int i = 0;i<b.length-1;i++)
{
int temp;
if(num < b[i])
{
temp = b[i];
b[i] = num;
b[i+1] = temp;
break;
}
}
//插入后的数组
for(int i = 0;i<b.length;i++)
System.out.print(b[i] + " ");
}}我还想到另外一种方法,就是先把排序好了的数组,强转成一个字符串. 然后再向字符串里添加一个数字,再强转
为Int类型,, 再重新排序,, 可是
int[] a = {1,2,3};
String b = String.valueOf(a); 这样的话, b里面是乱码. 高手帮我看看了.. 谢谢了..
提供一个已经排序好的数组.(1维),提示用户再输入一个数,然后按序列插入数组中..我自己的代码实现不了 . 有很多问题.. 请高人帮我改下..
import java.util.Arrays;
import java.util.Scanner;
public class ChaRuSort
{
public static void main(String[] args)
{
int[] a = new int[]{1,3,5};
int[] b = new int[10];
for(int i =0;i<a.length;i++)
{
b[i] = a[i];
}
System.out.println("插入前的数组:");
for(int i = 0;i<b.length;i++)
System.out.print(b[i]);
System.out.println();
System.out.println("输入一个数");
int num = new Scanner(System.in).nextInt();
for(int i = 0;i<b.length-1;i++)
{
int temp;
if(num < b[i])
{
temp = b[i];
b[i] = num;
b[i+1] = temp;
break;
}
}
//插入后的数组
for(int i = 0;i<b.length;i++)
System.out.print(b[i] + " ");
}}我还想到另外一种方法,就是先把排序好了的数组,强转成一个字符串. 然后再向字符串里添加一个数字,再强转
为Int类型,, 再重新排序,, 可是
int[] a = {1,2,3};
String b = String.valueOf(a); 这样的话, b里面是乱码. 高手帮我看看了.. 谢谢了..
import java.util.Arrays;
import java.util.Scanner;
public class ChaRuSort {
public static void main(String[] args) {
int[] a = new int[]{1,3,5};
int[] a1=new int[a.length+1];
for(int i =0;i<a.length;i++)
{
a1[i] = a[i];
}
System.out.println("插入前的数组:");
for(int i = 0;i<a.length;i++)
System.out.print(" "+a[i]);
System.out.println();
System.out.println("输入一个数");
int num = new Scanner(System.in).nextInt();
a1[a.length]=num;
Arrays.sort(a1);
System.out.println("排序后的数组:");
for(int i = 0;i<a1.length;i++)
System.out.print(a1[i] + " ");
}
}
而且程序的运行结果也是完全正确的.
{
b[i+1] = b[i];
}
b[i++] = num;
int a[] = new int[]{1,3,5,7,10};
int b[] = new int [a.length+1];
boolean hasinsert = false;
int num = new Scanner(System.in).nextInt();
for (int i = 0; i < b.length; i++) {
if (!hasinsert) {
if (num<=a[i]) {
b[i]=num;
hasinsert = true;
}else {
b[i]=a[i];
}
}else {
b[i]=a[i-1];
}
}
for (int i = 0; i < b.length; i++) {
System.out.print(b[i]+",");
}
int [] A = new int[]{1,3,5,7,9};
int [] B = new int[6];
for(int i=0;i<A.length;i++){
B[i] = A[i];
}
// for(int o:B){
// System.out.print(o+"\t");
// }
int in = new Scanner(System.in).nextInt();
for(int j=0;j<B.length;j++){
int temp = B[j];
if(in<temp){
B[j] = in;
in = temp;
}else if(B[j]==0){
B[j]=in;
}
}
for(int o:B){
System.out.print(o+"\t");
}
}
a[i]比num大的,则后移一位,a[i++] = a[i],直到找到第一个a[i] < num,把num插到a[i]之后就可以了。
平均查找时间是N/2
import java.util.Scanner;
public class ChaRuSort
{
public static void main(String[] args)
{
int[] a = new int[]{1,3,5};
int[] b = new int[4];
int m = 0;//用来控制a
int j = 0;//用来控制输入的数
int k = 0;//用来控制k
//输入出插入前的数组
System.out.println("插入前的数组:");
for(int i = 0;i<a.length;i++)
System.out.print(a[i]);
System.out.println();
System.out.println("输入一个数");
int num = new Scanner(System.in).nextInt();
//判断并往b中加数据
while(m<a.length&&j<1){
if(a[m]<=num){
b[k] = a[m];
m++;
k++;
}else{
b[k] = num;
j++;
k++;
}
}
//当输入的数不是最大时执行
while(m<a.length){
b[k] = a[m];
m++;
k++;
}
//当输入的数为最大时执行
while(j<1){
b[k] = num;
j++;
k++;
}
for(int i = 0;i<b.length;i++)
System.out.print(b[i]);
}}