随笔分类 -  数据结构

数据结构排序算法总结
摘要:第七章 排序 一、插入排序: 1、直接插入排序: //直接插入排序时间复杂度:O(n*n);空间复杂度:O(1);稳定的(指相同元素相对位置不变) void insertSort(int A[], int n){ int i, j; for (i = 1; i <n; i++){ int tmp = 阅读全文

posted @ 2017-09-14 12:57 最快的方法就是最慢 阅读(1794) 评论(0) 推荐(0)

[原创]快速排序(C++版)
摘要:快速排序时间复杂度:O(N*log2 N)空间复杂度:O(1)不稳定。 这个算法我试过针对单链表进行实现,但发现由于单链表从表尾反向遍历不方便,因此该算法不适合针对单链表进行实现, 下面我实现经典的场景:针对数组来实现该算法。 这里我只是用C++来实现了该算法,后面有机会我会写一篇java版的实现博 阅读全文

posted @ 2017-08-09 17:56 最快的方法就是最慢 阅读(525) 评论(0) 推荐(0)

[原创]堆排序(C++版)
摘要:堆排序 时间复杂度:O(N*log2N)空间复杂度:O(1)不稳定的 下面的方式我是通过向下调整创建大根堆,然后通过向下调整进行堆排序。 另外还可以通过向上调整,以及创建小根堆的方式来进行堆排序,下面我只列出向上调整的方法函数,至于如何通过向上调整以及创建小根堆来实现堆排序,后面有机会再补充完善在该 阅读全文

posted @ 2017-08-09 17:46 最快的方法就是最慢 阅读(214) 评论(0) 推荐(0)

[原创]二路归并排序针对单向链表的场景(java版)
摘要:二路归并排序最常用的场景是数组,那么如果数据结构采用单向链表呢?如何实现? 基本思想是一样的,对比数组场景,需要注意一下几点: ①在合并阶段:merge(..)合并两个已经有序的链表时,要比数组更简单些; ②在递归调用阶段:mergeSort(...),在该方法里,和数组一样需要确定中间位置,然后分 阅读全文

posted @ 2017-08-09 17:31 最快的方法就是最慢 阅读(701) 评论(0) 推荐(0)

[原创]二路归并排序针对数组的场景(C++版)
摘要://二路归并排序时间复杂度O(N*log2N)空间复杂度O(n) 稳定的 int n = 10; int* B = (int*)malloc((n + 1)*sizeof(int)); void merge(int A[], int low, int mid, int high){ int i, j 阅读全文

posted @ 2017-08-09 17:08 最快的方法就是最慢 阅读(252) 评论(0) 推荐(0)

导航