插入排序比冒泡排序快在哪里?

编程入门 行业动态 更新时间:2024-10-22 08:37:46
本文介绍了插入排序比冒泡排序快在哪里?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

问 题

1.代码

冒泡排序

/** * 找最小数排序1 * * 总结:冒泡排序,比较N2次,交换N2次。 * @author Administrator * */ public class MaoPaoSort { /** * @param args */ public static void main(String[] args) { int[] datas = {7,8,9,2,1,3,4,5,6,10}; for(int i=0;i<datas.length;i++){ System.out.print(datas[i] + ","); } System.out.println(); for(int i=0;i<datas.length;i++){ for(int j=i+1;j<datas.length;j++){ //总结:每次内循环,找到最小的值。(交换之后,最小的值在最左边) //比较 if(datas[i] > datas[j]){ //比较N2次 //交换 int temp = datas[i]; //交换N2次 datas[i] = datas[j]; datas[j] = temp; } } } for(int i=0;i<datas.length;i++){ System.out.print(datas[i] + ","); } } }

插入排序

/** * 找最小数排序3 * @author Administrator * */ public class InsertSort { /** * @param args */ public static void main(String[] args) { int[] datas = { 7, 8, 9, 2, 1, 3, 4, 5, 6, 10 }; for (int i = 0; i < datas.length; i++) { System.out.print(datas[i] + ","); } System.out.println(); int out,in; for (out = 1; out < datas.length; out++) { int temp = datas[out]; //初始值都一样 in = out; while(in>0 && datas[in-1]>temp){ //每次内循环,右移比基准值大的数据 datas[in] = datas[in-1]; in--; } datas[in] = temp; //把基准值插入合适的位置 } for (int i = 0; i < datas.length; i++) { System.out.print(datas[i] + ","); } } }

2.问题

《java数据结构和算法》上说,插入排序比冒泡排序快一倍,因为在每一趟排序发现插入点之前,平均只有全体数据项的一半真的进行了比较(书上原话,有点不明白)。

一个是内循环是for,一个内循环是while,while怎么就比for快了一倍呢?

解决方案

插入排序那个while(in>0 && datas[in-1]>temp)循环可以提前终止啊!你看stackoverflow/ques...

更多推荐

插入排序比冒泡排序快在哪里?

本文发布于:2023-10-13 09:57:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1487637.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!