本帖最后由 BlueWing 于 2015-9-5 15:23 编辑
用比较笨的一个办法(详见代码中步骤)做的一个,元素插入数组函数。
思路上有点问题,有地方没考虑到,达不到预想的功能。
代码如下,望老师指导!谢谢
- /*
- 需求:
- 数组的查找操作。
- 有一个有序的数组,想要将一个元素插入到该数组中,
- 还要保证该数组是有序的。
- {1,2,3,4,5,5,6,7,8,9}
- 0
- 思路:
- 1,利用插入元素与数组中元素做减法,得到的差值成为新的数组,差值最小的角标+1。
- 2,数组大小+1,插入元素后面的数组元素整体后移。
- 步骤:
- 1,函数返回值为数组,输入值为数组和插入值num。
- 2,遍历原数组,定义差值数组cha[],cha[x]=num-arr[]。
- 3,在cha[]数组中,去负号,找到最小值的角标min。
- 4,定义结果数组arrend[],将最小值角标(包含最小值)之前的数组按原顺序赋值给新数组。
- 最小值角标+1为插入数字的角标,之后的原数组,赋值给新数组,新数组中的角标+1。
-
- */
- class ArrInBlue
- {
- public static void main(String[] args)
- {
- int[] arr=new int[]{1,7,11,22,35,65,77,89,123,999};
- int[] arrend=arrin(arr,-3);
- printArray(arrend);
- }
-
- public static int[] arrin(int[] arr,int num)
- {
- int[] cha=new int[arr.length];
- int[] arrend=new int[arr.length+1];
- for(int x=0;x<arr.length;x++)
- {
- cha[x]=num-arr[x];
- if(cha[x]<0)
- {
- cha[x]=-cha[x];
- }
- }
-
- int min=0;
- for(int x=0;x<cha.length;x++)
- {
- if(cha[x]<cha[min])
- {
- min=x;
- }
-
- }
-
- for(int x=0;x<arrend.length;x++)
- {
- if(x>min+1)
- arrend[x]=arr[x-1];
- else if(x<min+1)
- arrend[x]=arr[x];
- else
- arrend[x]=num;
- }
- return arrend;
- }
-
-
- public static void printArray(int[] arr)
- {
- for(int x=0;x<arr.length;x++)
- {
- if(x!=arr.length-1)
- System.out.print(arr[x]+",");
- else
- System.out.println(arr[x]);
- }
- }
-
- }
复制代码 |
|