算法第四版
文章平均质量分 73
RKO-hiahiahia
一枚热爱编程的小子
展开
-
快速排序(包括三向切分的快速排序)
快速排序 一.对比归并排序和快速排序 快速排序是一种分治的排序算法。它将一个数组分成两个子数组,将两部分独立地排序。快速排序和归并排序是互补的:归并排序将数组分成两个子数组分别排序,并将有序的子数组归并以将整个数组排序;而快速排序是当两个子数组都有序的情况时整个数组也就自然有序了。归并排序递归调用发生在处理整个数组之前,快速排序递归调用发生在处理整个数组之后。在归并排序中,一个数组被等分成两半;在快速排序中,切分的位置取决于数组的内容。 二.代码 public class Quick { publi原创 2021-08-10 15:38:27 · 304 阅读 · 0 评论 -
归并排序
归并排序 一.思想 要将一个数组排序,可以先(递归地)将它分成两半分别排序,然后将结果归并起来。归并就是将两个有序的数组归并成一个更大的有序数组。 二.原地归并的抽象方法 实现归并一种直截了当的方法就是将两个不同的有序数组归并到第三个数组中,但是,当用归并将一个大数组排序时,需要进行很多次归并,如果每次在归并都创建一个新数组来存储排序结果会带来问题。所以我们用在归并算法类中定义一个辅助数组aux来临时存储排序数组的值,我们先把数组的值复制到aux数组中,然后再把两个有序的数组归并回原来的数组中,代码如下:原创 2021-08-09 23:58:44 · 95 阅读 · 0 评论 -
初级算法排序(选择排序,插入排序,希尔排序)
初级算法排序(选择排序,插入排序,希尔排序) 选择排序 简介 选择排序就是找到数组中最小的那个元素,然后将该元素和数组的第一个元素交换。然后在剩下的数组(除去第一个元素)找到最小的元素,将他与第二个元素交换,然后继续将剩下的数组(除去第一个,第二个元素,即除去已经排序好的元素)继续执行上述操作直到所有元素排序完毕。 代码(这里用到了之前的排序算法模板) public class Selection { /** * 选择排序(升序) * @param a */原创 2021-08-09 16:32:28 · 92 阅读 · 0 评论