网上看到的一首java题,因为是初学,不懂,又想弄明白,希望高手能再次帮助

具体如下,我挡下来了,不懂怎么完善这四个代码。谢谢了,很想弄明,完善它。谢谢了!

直接3排序(从小到大)

import java.util.Scanner;
public class InsertSort {
double num[];
Scanner scanner;

public InsertSort() {
num=new double[11];
scanner=new Scanner(System.in);

num[0]=0;//作为哨兵
System.out.println(”请输入十个数字:”);
for(int i=1;i<num.length;i++){
num[i]=scanner.nextDouble();
}//输入10个数字;

directSort(num); //对num数组下标从1到11的元素直接插入排序

System.out.println(”排序后的结果是:”);
for(int i=1;i<num.length;i++){
System.out.print(num[i]+” ”);
}//将排序后的num输出
}

public void directSort(double n[]){
//对数组下标为1的开始的元素进行直接插入排序
int i,j;
for(i=2;i<n.length;i++){
代码1;
for(j=i-1;代码2;j--)
代码3;
代码4=n[0];
}
}//对十个数字进行插入排序;

public static void main(String args[]){
InsertSort insertSort=new InsertSort();
System.exit(0);
}
}
希望回答者能把后面的四个代码给完善运行能成功,谢谢!

import java.util.Scanner;
import java.io.*;
public class InsertSort {
double num[];
Scanner scanner;

public InsertSort() {
num=new double[11];
scanner=new Scanner(System.in);

num[0]=0;//作为哨兵
System.out.println("请输入十个数字:");
for(int i=1;i<num.length;i++){
num[i]=scanner.nextDouble();
}//输入10个数字;

directSort(num); //对num数组下标从1到11的元素直接插入排序

System.out.println("排序后的结果是:");
for(int i=1;i<num.length;i++){
System.out.print(num[i]+" ");
}//将排序后的num输出
}

public void directSort(double n[]){
//对数组下标为1的开始的元素进行直接插入排序
int i,j;
for(i=2;i<n.length;i++){
for(j=i-1;j>0;j--)
if(n[j+1]<n[j])
{
n[0]=n[j];
n[j]=n[j+1];
n[j+1]=n[0];
}
}
}//对十个数字进行插入排序;

public static void main(String args[]){
InsertSort insertSort=new InsertSort();
System.exit(0);
}
}
测试成功!
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:

从第一个元素开始,该元素可以认为已经被排序
取出下一个元素,在已经排序的元素序列中从后向前扫描
如果该元素(已排序)大于新元素,将该元素移到下一位置
重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
将新元素插入到该位置中
重复步骤2
感觉有点像冒泡算法
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-01-08
不想看,我发一份差不多的代码给你参考,不会很难懂:
public class ArrayInsertion {
private long[] arrs;
private int nElems;

public ArrayInsertion(int maxSize) {
arrs = new long[maxSize];
nElems = 0;
}

public void insertionSort(){
int inner;
for(int out=1; out<nElems; out++){
long tmp = arrs[out]; //remove marked item;
inner = out;
while(inner > 0 && arrs[inner-1]>tmp){
arrs[inner] = arrs[inner-1];
--inner;
}
arrs[inner] = tmp;
}
}

public void insert(long elem){
arrs[nElems] = elem;
nElems++;
}

public void display(){
for(long val : arrs){
System.out.print(val + " ");
if(arrs.length %10 == 0){
System.out.println();
}
}
System.out.println();
}
}
第2个回答  2010-01-07
插入排序。
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:

从第一个元素开始,该元素可以认为已经被排序
取出下一个元素,在已经排序的元素序列中从后向前扫描
如果该元素(已排序)大于新元素,将该元素移到下一位置
重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
将新元素插入到该位置中
重复步骤2

上面的一段时从维基百科上找到的,你去搜一下吧,写的不错.
第3个回答  2010-01-07
哨兵法搜索算法和插入排序算法!

java实在学不明白,几个java问题请教大家
答:就是方法名相同参数不同的两个方法, 例如: public void sayHello(String name){} public void sayHello(String[] names){} 对比一下你就发现 这个方法的方法修饰符 - public 这个方法的返回值类型 - void 这个方法的方法名 - sayHello 都是一样的 唯一不同就是参数 参数 第一...

java简单问题,答案都书本都给出来了,可是都没懂,求助高手解释一下哈!先...
6.因为S1和S2对应的不是同一对象,对于两个对象之间使用“==”比较的是他们对应的内存地址是否相同,用equals比较才是比较之间的内容是否相同 13 数组必须这样定义,可以定义a[1][],a[][],a[1][1],但是不可以定义a[][1]因为产生数据的时候,会发现二维数组无法找到固定的一维数组作为支撑。至于...

java题目,请高手帮忙解决。
安全性:在 iSeries 服务器上运行的大多数 Java(TM) 程序是应用程序,而不是 applet,所以“砂箱”安全性模型对它们不起限制作用。从安全性的观点看,Java 应用程序所受的安全性限制与 iSeries 服务器上的任何其它程序相同。要在 iSeries 服务器上运行 Java 程序,您必须对集成文件系统中的类文件具有...

请java高手帮忙,解决一个难题呀?心急呀!
1. “文字排版” ,这年头连网上的H*小说如果不好好排版都没人看的,更何况是一堆代码和逻辑请很强的文字呢?2.“语言及文字表达”,在你上面所提的问题中我无法清晰的看出你的问题是什么?在你的内容中首先你表达了求助的意思,然后应该是粘贴了一份其他其他来源的资料,在这两段之间最好有个...

JAVA习题,请高手帮忙解答一下,急急急
02.O java类只能单继承和多实现 03.O Exception为所有异常的父类,所以,他包含所有的异常 04.X Class1类的方法可以访问 05.X 抽象类有构造方法,因为抽象类中有非抽象方法,可以被继承。06.X 如果父类中的构造方法没有要求参数,则可以省略super();07.O 正确的概念 08.O 可以,不过个goto容易...

朋友们,大家好!我是一个JAVA语言的初学者.
《Thinking in Java》并不是在完整的介绍Java的整个体系,而是一种跳跃式的写作方法,是一种类似tips的方法来对Java很多知识点进行了深入的分析和解释。对于初学者来说,最好是找一本Java入门的书籍,但是比较完整的循序的介绍Java的语法,面向对象的特性,核心类库等等,在看这本书的同时,可以同步来看《Thinking in Java...

大学生关于JAVA的学习和困惑,希望各位JAVA高手和从事JAVA工作的前辈指教...
JAVA语言是一门很实用的计算机编程语言。计算机专业对于Java的课程是必学的,Java作为使用最多的编程语言之一,学好Java在毕业公司招聘有很大优势。但是实际上可能你自己也感觉到了大学课程的学习并不能让你成为一个Java高手或者立即运用到的工作上,很多学生一学期甚至一学年学完后无法自主编写一个小程序,...

朋友让我帮助弄一个JAVA任务,我也不会所以就求助高手了!多谢帮助!分全...
) < 0) { return -1;} return -2;\/\/ 异常 } public String toString() { return "温度:" + this.value + " 单位:" + String.valueOf(this.unit);} public static void main(String[] args) { Temperature t1 = createTemperature();Temperature t2 = createTemperature();...

零基础的初学者怎样学习java
如果您学Java是因为单纯的兴趣爱好,自学是一个很不错的选择。但如果您想通过学Java技术转行的话,那么最好是选择参加Java培训班。当然,可能现在的您感觉参加Java培训班学费很贵,但是对于可以通过学习找到工作,还是比较值得的。总之,零基础小白学习JAVA要懂得一个道理,学习和掌握java相关技术也非一朝一...

我是个java初学者,怎么样才能学好java?
如果您学Java是因为单纯的兴趣爱好,自学是一个很不错的选择。但如果您想通过学Java技术转行的话,那么最好是选择参加Java培训班。当然,可能现在的您感觉参加Java培训班学费很贵,但是对于可以通过学习找到工作,还是比较值得的。总之,零基础小白学习JAVA要懂得一个道理,学习和掌握java相关技术也非一朝一...

相似回答
大家正在搜