算法 排序

排序:
冒泡排序,快速排序,选择排序,归并排序,插入排序,堆排序,希尔排序,基数排序

1.冒泡排序
前后两两进行对比交换,每走一轮就会让一个数据变得有序
在这里插入图片描述

2.基数排序:
基本思想:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。

空间复杂度:
最坏情况下:O(m*n) m代表“桶”的个数,一般是10。
时间复杂度:O(m+n)
m是保存桶的元素个数数组占的空间,n是保存桶的二维数组占的空间。
在这里插入图片描述
3.简单选择排序
在待排序数组中选出最小的(或最大)的与第一个位置的数据交换 然后在剩下的待排序数组中找出最小(或最大)的与第二个位置的数据交换,以此类推,直到第n-1个元素。
在这里插入图片描述
在这里插入图片描述
4.快速排序
快速排序(Quick Sort)是从 冒泡排序算法 演变而来的,实际上是在 冒泡排序 基础上的递归分治法。 快速排序在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比它小的元素移动到数列的另一边,从而把数列拆解成了两个部分。

在这里插入图片描述
在这里插入图片描述
时间复杂度:O(nlogn)
在这里插入图片描述

  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java提供了多种数据结构算法排序的实现。以下是一些常见的排序算法: 1. 冒泡排序(Bubble Sort):通过不断比较相邻元素并交换,将最大(或最小)的元素逐渐“冒泡”到最后(或最前)位置。时间复杂度为O(n^2)。 2. 选择排序(Selection Sort):每次选择未排序部分中最小(或最大)的元素,放到已排序部分的末尾(或开头)。时间复杂度为O(n^2)。 3. 插入排序(Insertion Sort):将未排序部分的元素逐个插入已排序部分的正确位置。时间复杂度为O(n^2)。 4. 快速排序(Quick Sort):通过选择一个基准元素,将列表分为两个子列表,其中一个子列表的所有元素都小于(或大于)基准元素,然后递归地排序两个子列表。时间复杂度平均情况为O(n log n)。 5. 归并排序(Merge Sort):将列表拆分为多个子列表,递归地对每个子列表进行排序,然后合并这些有序子列表以获得最终有序列表。时间复杂度为O(n log n)。 6. 堆排序(Heap Sort):将待排序元素构建成一个最大(或最小)堆,然后逐个移除堆顶元素并将其放入已排序部分。时间复杂度为O(n log n)。 7. 希尔排序(Shell Sort):将列表按照一定的间隔分组,并对每个分组进行插入排序,然后逐渐缩小间隔,直到间隔为1,最后再进行一次插入排序。时间复杂度取决于间隔序列的选择。 Java中提供了Arrays类和Collections类来对数组和集合进行排序,可以使用它们的sort方法。另外,你也可以自己实现这些排序算法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值