千家信息网

Java插入排序举例分析

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,本篇内容主要讲解"Java插入排序举例分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java插入排序举例分析"吧!插入排序原理①把所有元素分成已排序和
千家信息网最后更新 2025年11月13日Java插入排序举例分析

本篇内容主要讲解"Java插入排序举例分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java插入排序举例分析"吧!

插入排序原理

①把所有元素分成已排序和未排序两组

②找到未排序组的第一个元素,向已经排序的组中进行插入

③倒序遍历已经排好的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置,其他元素向后移动一位

插入排序API设计

类名Insertion
构造方法Insertion():创建Insertion对象
成员方法

1.public static void sort(Comparable[] a):对数组内的元素进行排序

2.private static boolean greater(Comparable v,Comparable w):判断v是否大于w

3.private static void exchange(Comparable[] a,int i,int j):交换a数组中,索引i和索引j处的值

插入排序代码实现

public class Insertion {    //对数组a的元素进行排序    public static void sort(Comparable[] a){        for(int i=1;i0;j--){                if(greater(a[j-1],a[j])){                    exchange(a,j-1,j);                }else{                    //找到了该元素,结束                    break;                }            }        }    }    //比较v元素是否大于w元素    private static boolean greater(Comparable v,Comparable w){        return v.compareTo(w)>0;    }    //数组元素i和j交换位置    private static void exchange(Comparable[] a,int i,int j){        Comparable t=a[i];        a[i]=a[j];        a[j]=t;    }}//测试代码 class Test{    public static void main(String[] args) {        Integer[] a={4,3,2,10,12,1,5,6};        Insertion.sort(a);        System.out.println(Arrays.toString(a));    }}

插入排序的时间复杂度分析

和冒泡排序分析相同!

虽然使用了双层循环,但内循环是真正完成排序的代码,所以主要分析内层循环的执行次数即可!

在数组元素为{12,10,6,5,4,3,2,1}为最坏情况

元素的比较次数为:(N-1)+(N-2)+(N-3)+...+2+1=((N-1)+1)*(N-1)/2=N^2/2-N/2;

元素的交换次数为:(N-1)+(N-2)+(N-3)+...+2+1=((N-1)+1)*(N-1)/2=N^2/2-N/2;

总执行次数为:2*(N^2/2-N/2)=N^2-N;
根据大O推导法则,保留最高阶项,即插入排序的时间复杂度为O(N^2)

到此,相信大家对"Java插入排序举例分析"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

元素 排序 分析 数组 次数 代码 方法 循环 复杂 位置 内容 复杂度 时间 索引 学习 实用 更深 相同 倒序 兴趣 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京专业进销存软件开发教程 问道手游哪个服务器最好 java 数据库连接池操作 河南服务器厂家批发云服务器 数据库收费问题的解决方案 大学网络技术基础教程教材 hive查找第一行数据库 跨区域合作共建软件开发公司 软件开发工程师高大上的叫法 软件开发需求定义顺序 网络安全员的工作 烟台软件开发工程师招聘 华为服务器主板序列号在哪儿 高级信息网络安全工程师 数据库应用项目化教程答案 陈艳丽江西云购网络技术有限公司 网络安全与运维难不 什么是通信网络安全防护服务 胸片数据库技术路线图 公安网络安全保障 魔兽世界转服务器转错了 软件开发的书籍及网络资源 深圳大合网络技术科技 联通网络安全监测中心 查看服务器 安装的脚本 2017全球网络安全企业 计算机软件开发实习过程中的问题 杭州核能网络技术科技有限公司 linux 服务器scp 公安网络安全保障
0