上一主题下一主题
推送至APP |
级别: 总版主
UID: 2
精华: 1
发帖: 12967
威望: 12978 点
铜币: 1126817 枚
贡献值: 0 点
注册时间: 2022-03-21
最后登录: 2024-02-18
0楼  发表于: 2022-03-25 13:06

十大经典排序算法(动态演示+代码)

  数据对象稳定性 稳定 数组不稳定、链表稳定 稳定 不稳定 不稳定 稳定 不稳定 稳定 稳定 稳定
  算法思想: 1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 3. 针对所有的元素重复以上的步骤,除了最后一个。 4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
  算法思想: 1. 从第一个元素开始,该元素可以认为已经被排序 2. 取出下一个元素,在已经排序的元素序列中从后向前扫描 3. 如果该元素(已排序)大于新元素,将该元素移到下一位置 4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 5. 将新元素插入到该位置后 6. 重复步骤2~5
  算法思想: 1. 选取第一个数为基准 2. 将比基准小的数交换到前面,比基准大的数交换到后面 3. 对左右区间重复第二步,直到各区间只有一个数
  堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子 节点的键值或索引总是小于(或者大于)它的父节点。
  3. 由于交换后新的堆顶R[1]可能违反堆的性质,因此需要对当前无序区(R1,R2,……Rn-1)调整为新堆,然后再次将R[1]与无序区最后 一个元素交换,得到新的无序区(R1,R2….Rn-2)和新的有序区(Rn-1,Rn)。不断重复此过程直到有序区的元素个数为n-1,则整个排 序过程完成。
  归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的 子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。
  算法思想:1.把长度为n的输入序列分成两个长度为n/2的子序列;2. 对这两个子序列分别采用归并排序;3. 将两个排序好的子序列合并成 一个最终的排序序列。
  希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。先将整个待排序的记录序列分割 成为若干子序列分别进行直接插入排序.
  3. 每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整 个序列作为一个表来处理,表长度即为整个序列的长度。
  如果 k(待排数组的最大值) 过大则会引起较大的空间复杂度,一般是用来排序 0 到 100 之间的数字的最好的算法,但是它不适合按 字母顺序排序人名。
  4. 向填充目标数组:将每个元素 i 放在新数组的第 C 项,每放一个元素就将 C 减去 1;
  1. 设置一个定量的数组当作空桶子。 2. 寻访序列,并且把项目一个一个放到对应的桶子去。 3. 对每个不是空的桶子进行排序。 4. 从不是空的桶子里把项目再放回原来的序列中。
  1. 取得数组中的最大数,并取得位数; 2. arr为原始数组,从最低位开始取每个位组成radix数组; 3. 对radix进行计数排序(利用计数排序适用于小范围数的特点)
☛ 1024社區区
上一主题下一主题
 电影2090 » 娱乐动态