排序
qq_37237304
这个作者很懒,什么都没留下…
展开
-
Java排序八堆排序
基本思想: 堆排序是一种树形选择排序方法,这种排序利用了堆的数据结构,是一种简单排序的改进版,将待排序的数组构造成一个大顶堆,将堆顶元素R1与最后一个元素R[n]交换,此时得到新的无序区和新的有序区,由于交换后的新的堆顶可能违反堆的性质,因此需要当前无序区调整为新堆,然后再将R1 与无序区的最后一个元素进行交换,得到新的无序区和新的有序区,重复此过程知道有序区的长度为初始数组的长度减一为止。 时间复杂度:O(nlogn),根据二叉树的特性得知 空间复杂度:O(1) 代码实现: public class he原创 2021-08-26 12:56:41 · 59 阅读 · 0 评论 -
2021-08-25Java排序七快速排序
基本思想: 从数组中挑出一个元素作为基准,将数组分为两个部分,比基准大的元素放在基准的后面,比基准小的元素放在基准的前面,此时基准位于数组的中间位置,然后再用递归对两边的数组进行相同的操作,最终完成排序。 时间复杂度:O(nlog) 空间复杂度:O(logn) 左右双指针,将数组的右边界right作为基准,从数组的左边界left开始找比right大的数,从数组的右边界right向前找比right小的数,找到后交换两个数的位置,知道left大于等于right时,终止排序,最后将left与最后一个位置的数做交换原创 2021-08-25 23:43:18 · 51 阅读 · 0 评论 -
Java排序六归并排序
基本思想: 使用分治法对数据进行处理,首先将数组不断的对半分成字数组,直到不再可分时,然后将没个相邻的元素进行比较,最后利用递归将两个数组合后在进行比较,最终合并为一个有序的数组。 时间复杂度: O(nlogn) 空间复杂度:O(n) 代码实现: public class MerSor { /** * 将两个数组不断均分成长度更小的数组 * @param num * @return */ public int[] MergeSort(int[] num原创 2021-08-25 13:41:09 · 46 阅读 · 0 评论 -
Java排序五希尔排序
基本思想: 希尔排序属于直接插入排序的改进版,主要思想就是每一遍都与数组自身长度的一半进行比较,比如第一次遍历就是位置为1的元素与位置为1加数组长度一半的位置的元素进行比较,然后第二遍就是与数组长度一半的一半加1进行比较,知道比较的位置变为自己元素的下一个元素为止。 时间复杂度: 空间复杂度: 代码实现: public class ShellSort { public int[] Shell(int[] nums){ if (nums.length ==0 ) return nums原创 2021-08-25 12:05:54 · 46 阅读 · 0 评论 -
Java排序四插入排序
基本思想: 从第二个位置开始,与前面已经排序好的数组进行对比,找到合适的位置插入进去。 时间复杂度:O(n^2) 空间复杂度:O(1) 代码实现: public class InsertSort { public int[] insertionSort(int[] nums){ if (nums.length ==0) return nums; int current;//当前数组 for (int i = 0;i<nums.length;i++原创 2021-08-24 21:45:03 · 46 阅读 · 0 评论 -
Java排序三选择排序
算法思想: 一直寻找剩下的数组中的最小元素,每遍历一次,数组长度减一,将最小的数放入现有数组的首位,知道遍历完所有数组中的元素。当遍历数组时,首先比较前两个元素,找到值小的元素,用这个元素去和其他的元素进行比较,如果比其他的元素都小,那么这个元素就是最小的元素,如果有比这个元素更小的元素,则将他们的位置互换,重复以上操作。 时间复杂度:O(n^2) 空间复杂度:O(1) 代码实现 public class SelectSort { public int[] selecttionSort(int[]原创 2021-08-24 21:25:43 · 49 阅读 · 0 评论 -
Java排序二冒泡排序
算法思想: 比较两个相邻的元素,如果左边的值大于右边的值,那么两个元素进行位置互换,否则位置不变。 时间复杂度:O(n^2) 空间复杂度O(1) 代码实现: public class BubbleSort { public static int[] bubblesort(int[] nums) { //如果长度为零直接返回数组 if (nums.length == 0) return nums; for (int j = 0; j < nums.原创 2021-08-24 12:51:27 · 47 阅读 · 0 评论 -
2021-08-23 Java十大排序一
排序的定义:把一些乱的数据通过某种方法由小到大排列起来 排序种类: 非线性时间比较排序 交换排序 冒泡排序 快速排序 插入排序 直接插入排序 希尔排序 选择排序 简单选择排序 堆排序 归并排序 线性时间非比较排序 计数排序 桶排序 基数排序 时间复杂度比较 排序算法 平均时间复杂度 最好情况 最坏情况 冒泡排序 O(n^2) O(n) O(n^2) 选择排序 O(n^2) O(n^2) O(n^2) 插入排序 O(n^2) O(n) O(n^2)原创 2021-08-24 12:01:19 · 60 阅读 · 0 评论