Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;vs-Java-选择排序性能_Java_C++_Sorting_Selection - Fatal编程技术网

C++;vs-Java-选择排序性能

C++;vs-Java-选择排序性能,java,c++,sorting,selection,Java,C++,Sorting,Selection,我用选择排序算法测试java和C++的性能。 以下是Java代码: public static void main(String[] args) { int[] mArray = new int[100000]; fillArrayRandomly(mArray, 10); long timeStart = System.currentTimeMillis(); selectionSort(mArray); long timeEnd = System.

我用选择排序算法测试java和C++的性能。 以下是Java代码:

public static void main(String[] args) {

    int[] mArray = new int[100000];
    fillArrayRandomly(mArray, 10);

    long timeStart = System.currentTimeMillis();
    selectionSort(mArray);
    long timeEnd = System.currentTimeMillis();

    System.out.println((timeEnd - timeStart) + "ms");
}

public static void selectionSort(int[] array) {
    for(int i=0; i<array.length-1; i++)
        for(int j=i+1; j<array.length; j++)
            if(array[j]<array[i])
                swap(array, i, j);
}

public static void swap(int[] array, int i, int j) {
    int tmp = array[i];
    array[i] = array[j];
    array[j] = tmp; 
}

public static void fillArrayRandomly(int array[], int maxNum) {
    Random generator = new Random(); 

    for(int i=0; i<array.length; i++)
        array[i] = generator.nextInt(maxNum);
}

public static void printArray(int array[]) {
    for(int i=0; i<array.length; i++)
        System.out.println(array[i]);
}
void fillArrayRandomly(int *array, int dim, int max)
{
    srand(time(NULL));

    for(int i=0; i<dim; i++)
        array[i] = rand() % max;
}

void selectionSort(int *array, int dim)
{
    for(int i=0; i<dim-1; i++)
        for(int j=i+1; j<dim; j++)
            if(array[i] > array[j])
                swap(array[i], array[j]);
}

int main()
{
    int DIM = 100000;
    int *array = new int[DIM];

    fillArrayRandomly(array, DIM, 100);

    long tStart = GetTickCount();
    selectionSort(array, DIM);
    long tEnd = GetTickCount(); 

    cout << tEnd-tStart << " ms" << endl;
    system("PAUSE");
}
publicstaticvoidmain(字符串[]args){
整数[]马里=新整数[100000];
fillArrayRandomly(马里兰州,10岁);
long timeStart=System.currentTimeMillis();
selectionSort(马里);
long-timeEnd=System.currentTimeMillis();
System.out.println((timeEnd-timeStart)+“ms”);
}
公共静态void selectionSort(int[]数组){

对于初学者来说,iTi=0;i,java代码只生成10个随机数,C++是100,显然会有更多的交换。通常,对于这种测试,你想要测试完全相同的数组。

< p>你的C++交换在哪里?>你使用“代码>模板STD:::交换(T&X,T&Y)?< /代码>这个模板是最好的“大”。在java测试中使用索引中的一个ALS。使用/>你是否编译了C++代码,并启用了任何优化?JVM做了很多优化,在C++代码中有很多潜在的优化。我猜你没有优化。你会展示你的编译器OPTI吗?C++代码的FOWS?C++代码在我的机器上比java代码执行得更快(我切换优化),但这并不意味着什么——您使用的代码在这两种语言中都没有特定的优势,并且性能大致相同。为了比较这两种语言各自的性能,这不是一个有趣的代码。@the.Coder您是否在VS 2012中进行调试或发布构建?我在Java中尝试了随机数,直到100同样,差异仍然是2秒。我将尝试使用相同的数组。实际上,我尝试使用相同的数组,Java的性能仍然更好。