加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

常见的初级排序算法

发布时间:2021-04-07 10:25:00 所属栏目:外闻 来源:互联网
导读:mparable: 为了让我们实现的排序算法更加的通用,可以排序任意的对象,所以我们这里使用了Comparable数组 sort: 不同的排序算法实现的方式不一样,子类自己去实现 less: 定义的公用方法,如果a b就返回true exch: 定义的公用方法,交换数组中的两个对象 prin
  • mparable: 为了让我们实现的排序算法更加的通用,可以排序任意的对象,所以我们这里使用了Comparable数组
  • sort: 不同的排序算法实现的方式不一样,子类自己去实现
  • less: 定义的公用方法,如果a < b就返回true
  • exch: 定义的公用方法,交换数组中的两个对象
  • print: 打印出数据中的每个元素

选择排序

算法实现的思路:

  • 首先找到数组中的最小元素,
  • 其实将它和数组中的第一个元素进行交换,这样就排定了一个元素;
  • 再次找出剩余元素中最小的元素与数组中的第二个元素进行交换,如此反复直到所有元素都是有序的如输入的数组是有序的,我们会发现选择排序运行的时候和未排序的时间一样长!

    对于N个元素的数组,使用「选择排序的时间复杂度是O(n2)」

    选择排序的是「数据移动最少」的,交换的次数与数组的大小是线性关系,N个元素的数组需要N次交换

    冒泡排序

    算法实现的思路:

    比较相邻的两个元素,如果前一个比后一个大,那么就交换两个元素的位置

    对每一组相邻的元素执行同样的操作,直到最后一个元素,操作完成之后就可以排定一个最大的元素

    如此往复,直到数组中所有的元素都有序于N个元素的数组,使用「冒泡排序的时间复杂度是O(n2)」

    插入排序

    想象我们在玩扑克牌时,整理扑克牌都是把每一张插入到左边已经排好序的牌中适当的位置。插入排序的思路类似

    算法实现的思路:

    • 初始默认第一个元素就是有序的,当前索引的位置从0开始
    • 先后移动当前索引的位置,当前索引位置左边的元素是有序的,从后往前开始扫码与当前索引位置元素进行比较
    • 当确定当前索引位置上的元素在左边有序适合的位置之后,插入到该位置上
    • 如果当确定当前索引位置上的元素大于了已排序的最后一个元素,那么当前索引位置直接往后移动
    • 如此反复,直到所有元素有序

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读