随笔分类 - 数据结构与算法
摘要:通常实现双向链表的数据结构:struct list_node1{ struct list_node1 *next,*prev; type1 m1; type2 m2;};struct list_node2{ struct list_node2 *next,*prev; type1 m1; type2 m2;};……对于每一种数据结构都定义了其特定的实现链表的结构和对应的方法(add/del)操作链表; 但对于具有大量不同数据结构,都要使用链表的系统中,如果为每一种数据结构定义特定的结构,和操作方法,无疑使代码变得重复和臃肿,需要实现一种通用的双向链表方法,...
阅读全文
摘要:快速排序一起泡排序每一次比较交换,选出最大的关键字放置到最后一个位置上。时间复杂度:O(n^2)例如: 二快速排序1 基本思想通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的所有关键字小。然后再分别对这两部分继续进行相同的排序分割。树形结构如下: 通常选取待排序记录的第一个值作为基准比较值。2 实现过程(1)过程 (2)分组 (3)代码//交换两个数的值void swap(int& a,int &b){ a = a + b; b = a - b; a = a - b;}//起...
阅读全文
摘要:插入排序直接插入排序的算法思想是:以数组的第一个元素作为基础,从第二个元素开始下标index = 1,依次到N。然后顺序的从下标0到下标index-1,与当前待插入的元素下标index进行比较,查找到合适的插入位置,然后将当前元素放到此位置上。两个循环:一是 从第二个元素开始,依次到N 二是 比较寻找合适位置,移动数组,插入元素两个过程:一是查找插入位置 二是将相应元素放到插入的位置上时间复杂度为:O(n^2)其实现算法如下:一 按照过程进行:bool sort_by_insert(int *src,int len){ int index = 1; int i,j...
阅读全文

浙公网安备 33010602011771号