快捷搜索: 王者荣耀 脱发

java中三种常见的排序方式

这节我们来了解一下java中常见的三种排序方式,这里我们说的是

1.冒泡排序

2.选择排序

3.插入排序

排序中要考虑到的主要因素是时间复杂度和空间复杂度,时间我们可以用

System.currentTimeMillis()这个来查看。

下面我们依次来说明

1.冒泡排序

所谓冒泡排序就是从前到后遍历选出最大值放到最后一个,然后在遍历剩下的找出剩

下中最大的放到倒数第二个,依次直至遍历到最后一个,也就是最小的放到第一个,

使其有序。下面我们来举例说明:

这里要说明的是这里有两个for循环嵌套,其中第一个for循环是控制比较的趟数(每一

趟选出一个最大值),第二个for是比较的次数(比较相邻两个是中较大的值)。

但这个冒泡排序是有缺憾的,是可以优化的。这里我们说一个简单的优化,如果原来

的数组就是有序的,那这个排序还是会选择每一个比较,时间复杂度会很大,于是我

们可以这么优化:

在第二个for设计一个int类型标志flg定义为0,如果发生交换,那么flg++,如果flg结

果为0,说明没有发生交换,那么数组本身就是有序的。函数如下:

2.选择排序

选择排序就是从第一趟开始,用第一个元素和剩下中的每一个元素比较,如果比第一

个小,就和第一个元素交换值,最后使得第一个元素中的值最小,第二趟选择出第二

小的放到第二元素,依次,使得数组有序。下面我们举例说明:

如同冒泡排序一般,第一个for循环控制趟数,第二个for循环控制每一趟中比较的次数。

3.插入排序

插入排序类似于打扑克牌,从第二张牌开始插入,小的插到大的前面,然后使其有

序。再拿第三张牌来,找到合适的位置继续插入,使这三张有序。在第四张直至全部

插入有序。举例说明:

第一个for控制插入的次数,第二个for循环是每一次插入后,找到插入值合适位置,使

现有的元素有序。

(新手上路,如有错误,请多多指教。)

经验分享 程序员 微信小程序 职场和发展