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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
排序算法Java——插入排序(直接插入排序)
扑克牌相信大家都有玩过,直接插入排序和玩扑克牌很相似,右手抓取一张扑克牌,并把它插入左手拿着的排好序的扑克里面。 如图: 算法介绍: 直接插入排序算法是最简单的算法,也是最基本的算法。SO,插入排序就是把当前待排序的元素插入到一个已经排好序的列表里面。 插入排序的最坏运行时间是O(n2), 所以并不是最优的排序算法。特点是简单,不需要额外的存储空间,在元素少的时
三种基本排序-冒泡排序、直接插入排序、选择排序
冒泡排序(从大到小)       原理:对于n个数,需要进行n-1次扫描,每次扫描通过相邻两个数的比较,找出最大的数,放到数列顶部。      程序:    1.冒泡排序1:每次扫描把下一个元素和最前面的元素比较,一次扫描结束后,最大的元素就在最前面了。     void bubble_sort1(int a[],int len) { int i,j; for (i=0; i  2.冒泡排序2:每扫描一次,通过相邻两个元素的比较,使得最小或最大的数位于顶部。   void bubble_so
插入排序、比较排序
一、插入排序       插入排序就是将一个待排数据按其大小插入到一个有序表的适当位置,并插入后仍有序。分为三类:直接插入排序;折半 插入排序;希尔插入排序。    【直接插入排序】  例如,把{4,3,1,2}进行排序,算法过程见图: 通常,有序的序表是r[1]、r[2].....,而r[0]是哨兵,用于存放需要排序的数据,属于赋值空间。 所以,算法时间复杂度是:
【排序算法】插入排序原理及Java实现
直接插入排序的基本操作是将一个记录插入到已经排好的有序表中,从而得到一个新的、记录数增1的有序表。对于给定的一组记录,初始时假定第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直到最后一个记录插到有序序列中为止。
五十道编程小题目 --- 28 八大排序算法 java 之 01直接插入排序
1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。 要点:设立哨兵,作为临时存储和判断数组边界之用。 直接插入排序示例: 如果碰见
Java插入排序法
插入排序法是插入式排序法的一种。 基本思想是:把n个待排序的元素看成一个有序表和无序表。一开始有序表只包含一个元素,无序表中包含n-1个元素。排序过程中每次从无序表中取出第一个元素,把它依次与有序表中的元素进行比较。然后把它插入到有序表的适当位置,形成新的有序表。 通俗的讲:假设第一
Java实现排序算法之 - 插入排序
生活情景: 不知道大家在生活中是如何思考排序这件事情的,就我来说,在打扑克牌(十三张那种哈)的时候,每拿到派发的一张牌, 就会将这张牌插入到合适的位置,这样每次插完之后就是得到了一次排好序的牌。插入排序就是用了这种思想,先给定一个排好序的序列(通常设定为给定要排序序列的第一个值),然后陆续将后面的值与前面排好序的比较,如果是小于前面的值,就插到前面去。就这样一直比较,然后最后总会插入到合适的位置
1000以内所有的回文数
Copyright(c)2013,烟台大学计算机学院学生 *All rights reserved. *文件名称:1000以内所有的回文数 *作者:杨飞 *完成日期:2013年 11 月7日 *版本号:v1.0 *对任务及求解方法的描述部分:1000以内所有的回文数 我的程序:#include using namespace std; int yang(int x);
Java面试编程题——排序,随机100个数,从大到小,输出次最大值
题目:随机生成100个小于1000的数,从大到小排序,并输出次最大值。 拿到题目的时候,想的好简单,冒泡排序,从大到小,取数组中第二个数,就是次最大值。回来又细想了下,如果随机生成的数中有重复值,这么做就不对了。 更改后,代码如下: public class Num { public static void main(String[] args) { //list存放10
C语言求1000以内水仙花数
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。