内排序的java实现

一:基础概念

1.概念区分

    内排序:指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列。

    外排序:处理的数据不能一次装入内存,只能放在读写较慢的外存储器上(移动硬盘之类的存储器)

2.内排序的鉴定

    从时间复杂度,空间复杂度,稳定度三个方面来综合考量某种排序算法的优劣。

二:插入排序

1.思想

逐步扩大成果的思想。将序列中第一个元素作为一个有序序列,然后将剩下的n-1个元素按关键字的大小依次插入该有序序列,每插入一个元素后都依然保证有序。

时间复杂度为O(n*n)。空间复杂度为O(1),属于原地排序,不申请多余空间。

2.java实现:列举三种实现算法







二.冒泡排序

1.思想:把小的元素往前调或者把大的元素往后调。比较相邻的两个元素,若发生交换,也是两个元素交换。

   总的平均时间复杂度为O(n*n),空间复杂度为O(1),是一种稳定排序。

2.算法实现:



三.选择排序

1.思想:每一次从待排序列中选出最大或者最小的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

   平均时间复杂度:O(n*n),空间复杂度O(1),不稳定排序。

2.算法实现


四.shell排序

1.思想:一种插入排序算法,是针对直接插入排序算法的改进,核心的思想是缩小增量。希尔排序实质上是一种分组插入算法。

   时间复杂度和区间长度的选取有关系,在O(n^(3/2))~O(N^(7/6))之间。空间复杂度为O(1),是一种不稳定排序。

2.算法:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值