算法
Albert_GW
追寻轮子制造之光
展开
-
基础排序算法-(8)-基数排序
基础排序算法-(8)-基数排序一、概念基数排序是一种借组多关键字排序思想对单逻辑关键字进行排序的方法,基数排序不是基于关键字比较的排序方法,它适合于元素量多而关键字较少的数列。基数的选择和关键字的分解是根据关键字的类型来决定的,例如关键字是十进制数,则按个位,十位来分解。二、算法步骤1、找出待排序的数组中最大和最小的元素2、统计数组中每个值为i的元素出现的次数,存入数组C的第i项3、对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加)4、反向填充目标数组:将每个元素i放在新数组的第C原创 2021-10-20 17:05:15 · 206 阅读 · 0 评论 -
基础排序算法-(7)-堆排序
基础排序算法-(7)-堆排序一、概念堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列;小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列;基本思想:先将数列建立堆,然后输出堆顶元素,再将剩下的元素建立堆,然后再输出原创 2021-10-20 16:49:33 · 120 阅读 · 0 评论 -
基础排序算法-(6)-快速排序
基础排序算法-(6)-快速排序一、概念快速排序采用的是分治法,其基本思想是将原问题分解成若干个规模更小但结构与原问题相似的子问题。通过递归地解决这些子问题,然后再将这些子问题的解组合成原问题的解。二、算法步骤1、在待排序数列的n个元素中任取一个元素,以该元素的排序码为基准,将所有元素分成两组,一组大于基准元素,另一组小于基准元素。2、采用相同的方法对两组元素进行排序,直到所有元素都排在相应位置为止。三、代码实现 public static int[] QuickSortASC(int [] s原创 2021-10-20 16:29:53 · 74 阅读 · 0 评论 -
基础排序算法-(5)-归并排序
基础排序算法-(5)-归并排序一、概念归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法:自上而下的递归(所有递归的方法都可以用迭代重写,所以就有了第 2 种方法);自下而上的迭代;二、算法步骤1、申请一个大小为两个数列长度之和的空间,用来存放合并后的数列。2、设定两个指针,最初指向两个已经排序的数列起始位置。3、比较两个指原创 2021-10-20 16:11:59 · 77 阅读 · 0 评论 -
基础排序算法-(4)-希尔排序
基础排序算法-(4)-希尔排序一、概念希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行依次直接插入排序。希尔排序是基于直接插入排序的以下两点性质而提出的改进方法:1.插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率。2.插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。二、算法步骤1、选择一个增量序列 t1,t2,…tk,原创 2021-10-20 15:58:46 · 100 阅读 · 0 评论 -
基础排序算法-(3)-插入排序
基础排序算法-(3)-插入排序一、概念插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。二、算法步骤1、将待排序数列的第一个元素作为有序数列,剩余的作为待排序数列。2、遍历待排序数列,将每个元素插入到已排序数列的适当位置,如果出现原创 2021-10-20 15:28:36 · 144 阅读 · 0 评论 -
基础排序算法-(2)-选择排序
基础排序算法-(2)-选择排序一、概念选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。无论什么样的数据列进去都需要花费 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。二、算法步骤1、在待排序数列中找一个最小(大)的元素,存放到排序数列的起始位置;2原创 2021-10-20 15:13:06 · 92 阅读 · 0 评论 -
基础排序算法-(1)-冒泡排序
基础排序算法-(1)-冒泡排序一、概念冒泡排序(Bubble Sort)是一种简单直观的排序算法。通过重复走访要排序的数列,每次比较相邻的两个元素,如果它们的顺序不符合要求,则交换位置,直到所有元素不再需要交换,就表示数列已经排序完成。二、算法步骤1、比较相邻的元素,如果第一个比第二个数字大,则交换位置;2、对每一对相邻元素重复同样的操作,每一趟走访都会把待排序数列中最大的数替换到最后;3、持续每次对越来越少的待排序元素重复步骤1和步骤2,直到待排序数列长度为1。三、动画效果四、代码实现原创 2021-10-20 14:47:32 · 107 阅读 · 0 评论