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

问题描述

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]+" "); } }

}

解决方案

你这代码根本就编译通不过啊。存在的语法错误: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));
    }

}

解决方案二:

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

解决方案三:

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

解决方案四:

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

时间: 2024-08-03 23:55:43

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

java 排序-java中插入排序和选择排序哪个速度快

问题描述 java中插入排序和选择排序哪个速度快 我在电脑随机生成了100000个数,但是算时间的时候,发现选择排序只用了3秒,插入排序用了8秒,冒泡排序用了19秒.因为刚自学,看到视频里说是插入排序快于选择排序.怎么实践出来不是哒? 解决方案 插入排序和选择排序都是O(n*n),算法复杂度一样,你看的什么视频? 至于具体的程序,算法复杂度一样的情况下,具体代码的差异.数据量,样本本身(完全无序.倒序.有序)等决定了谁快谁慢,但是在数量级上是一样的. 冒泡复杂度为O(n*n).当数据为正序,将不

插入排序用java写,排序量为两万,请问怎么写

问题描述 插入排序用java写,排序量为两万,请问怎么写 插入排序用java写,排序量为两万,请问怎么写???并且计算出所需要的时间是多少 解决方案 int[] arr= new int[20000]; 解决方案二: 大数据量排序的话,不能用内部排序,应该用外部排序吧.数据量太大加载到内存会出现内存溢出的. 解决方案三: import java.util.*; class sorts { public static void main(String[] args) { int[] arr= 你的

Java实现插入排序实例_java

本文实例讲述了Java实现插入排序的方法.分享给大家供大家参考.具体实现方法如下: import java.util.Arrays; /** * 算法名称: 插入排序 * 最佳效率O(n):最糟效率O(n²)与冒泡.选择相同,适用于排序小列表 * 若列表基本有序,则插入排序比冒泡.选择更有效率. * @author L.Eric * */ public class insertionSorting { public static void main(String[] args) { //定义一个

c语言-C语言用递归函数输出1000以内的水仙花数,不得使用循环,请问怎么写。

问题描述 C语言用递归函数输出1000以内的水仙花数,不得使用循环,请问怎么写. C语言用递归函数输出1000以内的水仙花数,不得使用循环,请问怎么写. 解决方案 #include <stdio.h> void fun(int n) { if(n<100 || n>1000) return; int a,b,c; c=n%10; b=n/10%10; a=n/100%10; if(a*a*a+b*b*b+c*c*c == n) printf("%dn",n);

Java编写一个图书管理系统,要使用JDVC技术访问,带有SQL数据库,请问怎么写

问题描述 Java编写一个图书管理系统,要使用JDVC技术访问,带有SQL数据库,请问怎么写 Java编写一个图书管理系统,要使用JDVC技术访问,带有SQL数据库,请问怎么写 解决方案 http://download.csdn.net/detail/u014029255/8284261 解决方案二: 1.写界面 2.写数据库连接 3.写数据库的增删改查 4.处理细节

java 要怎么准确获取word的总页数?

问题描述 java 要怎么准确获取word的总页数? java 通过poi是通过摘要获取word的页数,不准确. 请问还有什么其他的方法可以精确的获取word总页数吗? 项目运行在linux系统上 解决方案 没办法精确.如果你打开一个很大的word文档会发现,页数的计算需要很长的时间.这是因为影响页数的因素很多,并且这不是一个可以直接读取的值,而是需要完整渲染文档才能得到的. 如果你希望java准确获取,除非调用虚拟打印机打印一次,让word文档被渲染一遍,当然这是很耗时的. 解决方案二: 获取

无-用java中的setRGB()函数处理像素时,像素值与处理结果一样,这是怎么回事?

问题描述 用java中的setRGB()函数处理像素时,像素值与处理结果一样,这是怎么回事? int rgb1=((allRGB[i][x+1][3]* 256 + allRGB[i][x+1][4]) * 256) + allRGB[i][x+1][5]; bimageIO[i].setRGB(allRGB[i][x+1][0]allRGB[i][x+1][1] rgb1);其中allRGB[i][x+1][0]图像的x坐标其中allRGB[i][x+1][1]图像的y坐标

请问java中des怎么处理,找了一些代码和delphi的不一样,请问怎么在做标准des

问题描述 请问java中des怎么处理,找了一些代码和delphi的不一样,请问怎么在做标准des

用Java集合中的Collections.sort方法如何对list排序(两种方法)_java

第一种是list中的对象实现Comparable接口,如下: /** * 根据order对User排序 */ public class User implements Comparable <user> { private String name; private Integer order; public String getName() { return name; } public void setName(String name) { this.name = name; } publi