亲宝软件园·资讯

展开

Java常用排序算法及代码实现

程序员的小傲娇 人气:0

经典的排序算法有八种,分别为:

其中冒泡排序、选择排序、插入排序称为三大基本排序。

虽然这三大基本排序算法时间复杂度都是O(n2),但是其实细细讨论之下,还是有各自的特点的。

1.冒泡排序

冒泡排序法的思路

基本思路:

假设我们需要进行升序排列

进行N轮的比较,每一轮将相邻的两个元素依次比较,根据大小进行交换,每轮比较结束后,将最大的元素依次‘冒’到数组的末尾,经过几轮比较后,数组就会呈现有序的状态。

图解:

2)后面每轮都按照此方法进行比较,但是需要注意,此后的每一轮都需要比前一轮少比较一次,因为前面已经确定了最大元素的位置,为了提高性能,可以不用再和后面确定了位置的元素进行比较。

3)由此可以确定,当数组的长度为N时,需要比较的轮数为N-1轮。每轮中从第一个元素开始相邻元素两两进行比较,第一轮需要比较N-1次,第2轮需要比较N-2次,依次类推,实现整体排序。

2.冒泡排序法的代码实现

3.冒泡排序法优化

以上的冒泡排序法还有优化的空间。因为如果一个数组已经是完全有序的情况下,冒泡排序法仍然会进行逐轮的比较,这无疑是浪费性能的行为。因此我们可以确定,当冒泡的比较中,有一轮如果没有发生交换,则可以确定当前数组已经完全有序,后面的轮数完全不必在进行。故做以下的调整:

通过定义一个标识符isSort,如果有一轮没有发生任何交换,则isSort就会为true,下次直接break,后面的轮数就不用再进行比较了。

4.选择排序

选择排序的思路

基本思路:

选择排序和冒泡排序不同,选择排序会通过一轮比较,选出最小的那个元素的下标,然后和第一个元素进行交换,这样第一个元素的位置就可以确定了。

第二轮如法炮制,从第二个元素开始依次比较,选出最小的元素的下标,和第二个元素交换位置,这样第二小的元素位置就确定了。

后面依次类推,直到整个数组呈现有序状态。

选择排序法的代码实现:

5.插入排序

插入排序的思路

基本思路:

假设一个数组已经基本有序,则这个时候插入排序就是一个不错的选择。插入排序是先保证左边元素是基本有序的,然后将后面的元素依次和左边元素进行比较,如果比较到一个比自己小的元素时就可以停止比较了,因为左边已经呈现有序状态,找到比自己小的元素时,就不用再往后比较了。

插入排序的代码实现:

总结:

以上就是小编整理的Java经典的八种排序算法,希望对学习Java的小伙伴有帮助

加载全部内容

相关教程
猜你喜欢
用户评论