快速回忆十大排序

快速回忆十大排序

Java中Arrays.sort()

通过查看Arrays.sort() 的源码, 可以发现 Arrays.sort() 并不是简单的使用快排,而是根据要排序的长度选择不同的排序。 简单总结:

区间长度 所使用的排序算法
小于47 插入排序
大于47小于286 快排排序
大于286,数据基本有序 归并排序
大于286,数据基本无序 快速排序

xlc520algorithmalgorithm大约 12 分钟
七大排序(代码+动图演示)

七大排序(代码+动图演示)

1.排序的概念及其运用

1.1排序的概念

排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。

稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次 序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排 序算法是稳定的;否则称为不稳定的。

稳定性的意义:在根据多种属性进行排序时会有巨大的意义。比如我们先对学生按照学号进行了排序,再对学生进行了按照成绩进行排序,此时学号和成绩成为了两种决定因素,如果我们在按照成绩进行排序时,所使用的算法是不具有稳定性的,那么在对成绩排序后,之前根据学号进行的排序就没有意义了,此时就会出现相同成绩,但是学号靠后的在前面,反之,如果我们选择的排序具有稳定性,那么成绩相同,学号靠前的应该在前面。

内部排序:数据元素全部放在内存中的排序。

外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。一般数据是存储在磁盘中的。


xlc520algorithmalgorithm大约 32 分钟
快速排序

快速排序

一、简介

快速排序(Quick sort)是对冒泡排序的一种改进,是非常重要且应用比较广泛的一种高效率排序算法。

二、算法思路

快速排序是通过多次比较和交换来实现排序,在一趟排序中把将要排序的数据分成两个独立的部分,对这两部分进行排序使得其中一部分所有数据比另一部分都要小,然后继续递归排序这两部分,最终实现所有数据有序。

大致步骤如下:

第一种 :

  • 1.首先设置一个分界值也就是基准值又是也称为监视哨,通过该分界值将数据分割成两部分。

  • 2.将大于或等于分界值的数据集中到右边,小于分界值的数据集中到左边。一趟排序过后,左边部分中各个数据元素都小于分界值,而右边部分中各数据元素都大于或等于分界值,且右边部分个数据元素皆大于左边所有数据元素。

  • 3.然后,左边和右边的数据可以看成两组不同的部分,重复上述1和2步骤

  • 当左右两部分都有序时,整个数据就完成了排序。


xlc520algorithmalgorithm排序大约 6 分钟
算法


xlc520algorithmalgorithm小于 1 分钟