2 qq 32256907 qq_32256907 于 2016.03.06 20:41 提问

java实现插入排序,可以实现一千以内的数排序,但大了就无结果请问是怎么回事,电脑运行慢??

public class Text {
static int i;
static int j;
static int temp;
int[] r = new int[20000];
public static void Text(int[] r){
for(i=1;i temp = r[i];
j=i-1;
while(j>=0&&temp<r[j]){
r[j+1]=r[j--];
r[j+1]=temp;
}
}

public static void main(String[] args) { int[] r = new int[20000];
int i,j,temp;
for(i=0;i<r.length;i++) {
r[i] = (int)(Math.random()*20000); } Text(r);
for(i=0;i<r.length;i++) { System.out.print(r[i]+" "); } }

}

4个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.06 21:05
已采纳

你这代码根本就编译通不过啊。存在的语法错误:1你的成员变量有一个数组r,而你方法参数也是int[]r,你使用时两个同名变量冲突了。
修正下你的代码如下:

 import java.util.Arrays;

public class Text {
    public static void insertSort(int[] array) {
        for (int i = 1; i < array.length; i++) {
            int currentValue = array[i];
            int position = i;
            for (int j = i - 1; j >= 0; j--) {
                if (array[j] > currentValue) {
                    array[j + 1] = array[j];
                    position -= 1;
                } else {
                    break;
                }
            }

            array[position] = currentValue;
        }

    }

    public static void main(String[] args) {
        int[] r = new int[2000];
        for (int i = 0; i < r.length; i++) {
            r[i] = (int) (Math.random() * 20000);
        }

        System.out.println("before sort:"+Arrays.toString(r));
        insertSort(r);
        System.out.println("after sort:"+Arrays.toString(r));
    }

}

wojiushiwo945you
wojiushiwo945you 回复Jimbo: 你别告诉我你这段代码能编译通过啊。肯定有冲突啊,你怎么知道用的是那个r呢?
接近 2 年之前 回复
WinsenJiansbomber
WinsenJiansbomber 不能吧,参数名和类成员同名怎么会冲突呢!
接近 2 年之前 回复
qq_20039385
qq_20039385   2016.03.07 09:10

因为排序是把数据加载到内存来算的,小数据量没有问题,大数据量就不建议加载到内存来排序,容易内存溢出。

WinsenJiansbomber
WinsenJiansbomber   2016.03.06 21:26

怎么可能,才几千个数的排序,现在的电脑,刷刷几下就排好了

WinsenJiansbomber
WinsenJiansbomber   2016.03.06 21:26

怎么可能,才几千个数的排序,现在的电脑,刷刷几下就排好了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!