摘要:
归并排序(分治思想的运用)原理:将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的,然后再把有序的子序列合并为整天有序序列。分治算法步骤:第一步:划分。将原问题划分为几个子问题第二步:递归求解。递归求解每个子问题第三步:合并。将求解后的子问题合并成原问题代码实现(递归):void mergeSort(int[] arr){ sort(arr,0... 阅读全文
摘要:
选择排序可以分为:简单选择排序和堆排序(已知位置,找元素)1.简单选择排序原理:就是直接从待排序数组里选择一个最小(最大)的数字,顺序放入数组里,直到数组排好序代码实现:for(int i=0;i 0; i--){ heapAdjust(arr, i, a.length); } //排序 for(int j = a.length; j > 1; j--){ ... 阅读全文
摘要:
原理:比较临近的两个数字,按照从小到大的顺序进行交换,这样一趟过去后,最大(最小)的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第i位时结束。 分析:稳定,空间复杂度O(1),时间复杂度【最佳、最差、平均都是O(n*n)】。 分析:稳定,空间复杂度O(1),时间复杂度[最佳为O( 阅读全文
摘要:
原理:将一个未排序数组分为无序区和有序区,不断将无序区的第一个元素按照大小插入到有序区,最后直到无序区的元素都插入到有序区,排序完成。 分析:稳定(无跳跃),空间复杂度O(1),时间复杂度【最佳O(n),平均、最差O(n*n)】 优点:适用于(1)数组基本有序(2)数据量小 原理:将数据按照不同的增 阅读全文
摘要:
还记得这个经典公式吗? 程序=数据结构+算法 可见数据结构和算法对于程序的重要性。基于此博主写了数据结构与算法系列随笔。下面先给出数据结构与算法的思维导图。一.数据结构的基本概念数据结构定义:数据结构是一种存储和组织数据的方式,以便于访问和修改。数据结构包括数据的逻辑结构、数据的存储结构以及数据的运算,即按照某种逻辑关系组织起来的一批数据,按一定的映射方式把它存放在计算机的存储器中,并... 阅读全文