排序算法

来源:互联网 发布:python re group 编辑:程序博客网 时间:2024/06/09 14:17

排序算法

一般Java中进行排序会直接调用Collection接口,但是算法的基本原理还是要懂的:
先看一下都有都有什么排序
这里写图片描述

排序算法

直接排序

把序列分为有序和无序两部分
默认序列第一个记录是有序的,
a.把序列分为有序和无序两部分,默认第一个记录为有序
b.设立监视哨兵在最后一般第一个数当哨兵,其实不要哨兵也可以,
c.哨兵的作用是判断数组边界,防止数组下标越界

如下图:
对49,38,65,97,76,13,27进行直接排序
这里写图片描述

希尔排序

希尔排序又叫缩小增量排序,
gap步长,每次为原来的一般
gap1=4
gap2=2
gap3=1
举例:13 27 49 55 04 38 65 97 76
gap=9/2=4

如下图:
对27 49 55 04 38 65 97 76 进行希尔排序
这里写图片描述
注:网上找不到合适的例子,自己写了一个算了一遍

简单选择排序

从序列中找出最小的数,如果不是第一个元素就与第一个元素互换,
然后在剩下序列中找出最小的,一次类推,直到将当前第 i 小的元素放在位置 i 上
这里写图片描述

堆排序

分为小堆和大堆下图是小堆
大堆比较好理解,这里放的是小堆的计算过程
这里写图片描述

冒泡排序

像压强或气泡一样,大的沉下去,小的浮上来

这里写图片描述

快速排序

首先选取一个中轴值,将序列分为两部分,从两边节点想中间靠拢
好像折纸一样,二分之一,又二分之一,有二分之一。。。

如下图:
46 30 82 90 56 17 95 15 共8个元素
这里写图片描述

目录

  • 排序算法
    • 排序算法
      • 直接排序
      • 希尔排序
      • 简单选择排序
      • 堆排序
      • 冒泡排序
      • 快速排序
      • 目录

原创粉丝点击