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

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

  数据对象稳定性 稳定 数组不稳定、链表稳定 稳定 不稳定 不稳定 稳定 不稳定 稳定 稳定 稳定
  算法思想: 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 » 娱乐动态