
课程咨询: 400-996-5531
投诉建议: 400-111-8989
认真做教育 专心促就业
极客头条
【广州达内培训】:佛山达内培训的小编在收集到了很多关于Java技术方面的知识和资讯,在这里就相应的分享给大家,关于Java中如何实现排序算法,希望对大家有很大的帮助。下面就一起和佛山达内培训的小编一起看看这些知识和内容吧排序是我们生活中经常会面对的问题。
同学们做操时会按照从矮到高排列;老师查看上课出勤情况时,会按学生学号顺序点名;高考录取时,会按成绩总分降序依次录取等。那排序的严格定义是什么呢?
排序的基本概念与分类
对于内排序来说,排序算法的性能主要是受 3 个方面影响:
1.时间性能
【广州IT培训】:排序是数据处理中经常执行的一种操作,往往属于系统的核心部分,因此排序算法的时间开销是衡量其好坏的最重要的标志。在内排序中,主要进行两种操作:比较和移动。比较指关键字之间的比较,这是要做排序最起码的操作。移动指记录从一个位置移动到另一个位置,事实上,移动可以通过改变记录的存储方式来予以避免(这个我们在讲解具体的算法时再谈)。总之,高效率的内排序算法应该是具有尽可能少的关键字比较次数和尽可能少的记录移动次数。
2. 辅助空间
【达内培训】:评价排序算法的另一个主要标准是执行算法所需要的辅助存储空间。辅助存储空间是除了存放待排序所占用的存储空间之外,执行算法所需要的其他存储空间。
3. 算法的复杂性
注意这里指的是算法本身的复杂度,而不是指算法的时间复杂度。显然算法过于复杂也会影响排序的性能。
根据排序过程中借助的主要操作,我们把内排序分为:插入排序、交换排序、选择排序和归并排序。可以说,这些都是比较成熟的排序技术,已经被广泛地应用于许许多多的程序语言或数据库当中,甚至它们都已经封装了关于排序算法的实现代码。
因此,我们学习这些排序算法的目的更多并不是为了去在现实中编程排序算法,而是通过学习来提高我们编写算法的能力,以便于去解决更多复杂和灵活的应用性问题。
本章一共要讲解七种排序的算法,按照算法的复杂度分为两大类,冒泡排序 、简单选择排序和直接插入排序属于简单算法,而希尔排序、堆排序、归并排序、快速排序属于改进算法。后面我们将依次讲解。
假设含有 n 个记录的序列为{r1,r2,......,rn},其相应的关键字分别为{k1,k2,......,kn} ,需确定 1, 2……, n 的一种排列 p1,p2,.......,使其相应的关键字满足 kp1<=kp2<=…… <=kpn (非递减或非递增) 关系,即使得序列成为一个按关键字有序的序列{rp1,rp2,.......,rpn},这样的操作就称为排序。
1.1排序的稳定性
也正是由于排序不仅是针对主关键字,那么对于次关键字,因为待排序的记录序列中可能存在两个或两个以上的关键字相等的记录,排序结果可能会存在不唯一的情况,我们给出了稳定与不稳定排序的定义。
假设 ki=kj ( 1<=i<=n,1<=j<=n,i≠j) ,且在排序前的序列中 ri领先于 rj (即 i<>
1.2内排序和外排序
根据在排序过程中待排序的记录是否全部被放置在内存中,排序分为:内排序和外排序。
【广州达内培训】:内排序是在排序整个过程中,待排序的所有记录全部被放置在内存中。外排序是由于排序的记录个数太多,不能同时放置在内存,整个排序过程需要在内外存之间多次交换数据才能进行。我们这里主要就介绍内排序的多种方法。
【广州IT培训】:看了上面的这些内容之后,我想大家对排序应该有了一定的认识了,大家也可以试着去做一些相应的操作,或者跟着练习,想学一门专业的Java技术,是一个很大的挑战的,你一定要努力的同时还要有耐心,如果想学一门专业的IT技术,欢迎来佛山达内培训机构进行跟更多的了解和咨询。