已有101人关注
求大神帮我分析一下这个问题,使用直插排序法排序..
发表在Java图书答疑 2015-05-21
是否精华
版块置顶:
public class 数组大小插入排序 {

public static void main(String[] args) {
int[] YWSZ = new int[]{20,40,90,30,80,70,50,150};   //创建一维数组
System.out.print("一维数组排序前:");            
for(int i = 0; i<YWSZ.length;i++){              //遍历一维数组
int YWSZSL = YWSZ[i];                       //实例化一维数组,自己学会了!
//System.out.print(YWSZ[i]+" ");            //输出一维数组,旧方法
System.out.print(YWSZSL+" ");               //输出一维数组
}
int j;                                         //创建临时变量
int LSBL;                                       //创建临时变量
int i;

System.out.print("\n一维数组排序从:");
for(i=0; i<YWSZ.length;i++){                    //一维数组从第二位排列
LSBL=YWSZ[i];                               //存入临时变量


for(j=i-1;j>=0 && YWSZ[j]>LSBL;j--){           //?求解..

YWSZ[j+1]=YWSZ[j];                         //?求解..


}
YWSZ[j+1]=LSBL;                               

}

System.out.print("\n一维数组排序后:");
for( i = 0; i<YWSZ.length;i++){                 //遍历一维数组
int YWSZSL = YWSZ[i];                       //实例化一维数组,自己学会了!
//System.out.print(YWSZ[i]+" ");            //输出一维数组,旧方法
System.out.print(YWSZSL+" ");               //输出一维数组
}



}

}
分享到:
精彩评论 4
曹建明
学分:0 LV1
2015-05-21
沙发
for(j=i-1;j>=0 && YWSZ[j]>LSBL;j--){ //?求解..

YWSZ[j+1]=YWSZ[j]; //?求解..
菜鸟级精英
学分:0 LV1
TA的每日心情
开心
2020-03-23 21:05:48
2015-05-22
板凳
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
for(j=i-1;j>=0 && YWSZ[j]>LSBL;j--){ //?求解..

YWSZ[j+1]=YWSZ[j]; //?求解..
[/FIELDSET]

回复:
  这是排序的一种写法,实现每一轮查找后,让被比较的数,插在比自己大的数之前,这些比较大的数都会往后挪。
for (i = 0; i < YWSZ.length; i++) { // 遍历一维数组
LSBL = YWSZ[i]; // 存入临时变量,也就是被比较的数
// 遍历YWSZ[i]之前的数字,如果有比YWSZ[i]大的,则往后排。j不断减小,实现数组从后往前查。当i=0时,此循环并未执行。
for (j = i - 1; j >= 0 && YWSZ[j] > LSBL; j--) { 
YWSZ[j + 1] = YWSZ[j]; // 将大于LSBL的值,都向后挪一位
}
YWSZ[j + 1] = LSBL;//将原本YWSZ[i]中的值,放到比自己大的数之前
}
如果觉得理解起来吃力,可以在纸上模拟一下计算的步骤。
这个算法运行起来不是最快的,选择排序比这个算法更快,感兴趣的话可以看看《Java 从入门到精通》数组这一章,有对冒泡排序和选择排序的介绍。
曹建明
学分:0 LV1
2015-05-22
地板
[FIELDSET][LEGEND]引自:2楼[/LEGEND]
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
for(j=i-1;j>=0 && YWSZ[j]>LSBL;j--){ //?求解..

YWSZ[j+1]=YWSZ[j]; //?求解..
[/FIELDSET]

回复:
  这是排序的一种写法,实现每一轮查找后,让被比较的数,插在比自己大的数之前,这些比较大的数都会往后挪。
for (i = 0; i < YWSZ.length; i++) { // 遍历一维数组
LSBL = YWSZ[i]; // 存入临时变量,也就是被比较的数
// 遍历YWSZ[i]之前的数字,如果有比YWSZ[i]大的,则往后排。j不断减小,实现数组从后往前查。当i=0时,此循环并未执行。
for (j = i - 1; j >= 0 && YWSZ[j] > LSBL; j--) { 
YWSZ[j + 1] = YWSZ[j]; // 将大于LSBL的值,都向后挪一位
}
YWSZ[j + 1] = LSBL;//将原本YWSZ[i]中的值,放到比自己大的数之前
}
如果觉得理解起来吃力,可以在纸上模拟一下计算的步骤。
这个算法运行起来不是最快的,选择排序比这个算法更快,感兴趣的话可以看看《Java 从入门到精通》数组这一章,有对冒泡排序和选择排序的介绍。
[/FIELDSET]

回复:请问那段程序是属于冒泡排序和选择排序吗?如果是的话那就是因为我没有学过冒泡算法,因为那段程序是在冒泡算法的前面的一个实例,花了几天时间就是看不懂那段代码
  
菜鸟级精英
学分:0 LV1
TA的每日心情
开心
2020-03-23 21:05:48
2015-05-25
4L
[FIELDSET][LEGEND]引自:3楼[/LEGEND]
回复:请问那段程序是属于冒泡排序和选择排序吗?如果是的话那就是因为我没有学过冒泡算法,因为那段程序是在冒泡算法的前面的一个实例,花了几天时间就是看不懂那段代码
  
[/FIELDSET]

回复:
  这里任何一段都不是冒泡排序和选择排序,这是一个独立的算法。
首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照