问题描述
- 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