【发布时间】:2012-09-09 17:53:31
【问题描述】:
您好,我对 java 编程比较陌生。我编写的以下程序似乎占用了大量内存(大约 240 MB,这正常吗? - 我不这么认为!) 请提出一些方法来优化这个程序,以减少内存存储。
计划 -
You have 2 sorted array suppose arr1[4] and arr2[3]
now we have to combinely sort them using very little extra space(i.e. in-place sort)
ex..arr1[4]={5,8,11,14,16}
arr[2]={1,7,10}
then result should be--in arr1[4]={1,5,7,8,10}
in arr2[3]={11,14,16}
代码 -
import java.util.*;
class sort_in_place
{
public static void main(String args[])
{
// input 2 sorted arrays
int []a = {5,8,11,14,16};
int []b = {1,7,10};
System.out.println("initial array: a = "+Arrays.toString(a)+" b = "+Arrays.toString(b)+"\n");
// use extra space to store the array 'a' elements.
int key = 0, i=0;
for( i=0; i<a.length ; i++)
{
key = a[i]; // store value in temporary variable key.
// if key is greater than 1st element of array 'b' then exchange their values and sort array 'b'
if(key > b[0])
{
int j = 1;
a[i] = b[0];
while(j<b.length && key > b[j])
{
b[j-1] = b[j];
j++;
}
b[j-1] = key;
}
}
System.out.println("final array: a = "+Arrays.toString(a)+" b = "+Arrays.toString(b)+"\n");
}
}
【问题讨论】:
-
定义“使用24M”;你是怎么得出这个数字的?另外,这很难阅读。
-
.. 另外请编辑您的问题,以便您的代码很好地放置在代码 sn-p 中。
-
您的性能目标数字是多少,以及(正如 Dave 评论的那样)您使用的确切值是多少(Windows 上的性能计数器,...)?当你没有很好的可衡量的目标时,“优化”某些东西并不是一个好主意。
-
@DaveNewton 请参阅以下链接,[link] (ideone.com/pUszr) 占用的内存为 245632 kB。
-
@abhey 那是~240M,不是 24M,FWIW。
标签: java arrays sorting memory