最近忙着复习找工作,熟悉了下排序算法,动手写了一下,发现有些问题的边界条件还是没有考虑清楚,不过好在调试成功。不稳定排序:堆排序,快速排序,希尔排序;稳定排序:插入排序,冒泡排序,选择排序,归并排序,基数排序等。插入排序算法代码:void InsertSort(int A[],int n){ ...
分类:
其他好文 时间:
2014-08-28 19:39:25
阅读次数:
287
//过程示例/*[12][23]---------------------合并[12]and[23]得[12,23]---------------------[21]---------------------合并[12,23]and[21]得[12,21,23]---------------------[12][23]---------------------合并[12]and[23]得[12,23]------------------------------------------..
分类:
其他好文 时间:
2014-08-28 11:39:00
阅读次数:
360
堆排序是一种具有合并排序和插入排序共同优点的排序方法。它的时间复杂度为O(nlgn)...
分类:
编程语言 时间:
2014-08-27 23:30:18
阅读次数:
271
有些人说 归并排序的递归版本实用性差 可读性强非递归版本恰好相反我觉得 也没那么明显差距吧....其实非递归版本也不难理解的假如 我们需要进行排序的数组的长度为 len 每次的子排序数组区间为size那么我们首先将它拆成 len个size为1的小区间 然后2个相邻的进行合并merge排序 这时候 你...
分类:
其他好文 时间:
2014-08-27 20:27:18
阅读次数:
346
O(n log n)时间复杂度和常量地址空间下进行链表排序。
链表快速排序与链表的归并排序,以及两种性能对比思考。...
分类:
其他好文 时间:
2014-08-27 18:50:38
阅读次数:
239
一、归并排序
算法思路就是把数组分成左右两个部分,然后再进行归并两个有序表
void merge(int* num,int start,int mid,int end,int* copy)
{
int i = start,m = mid,j = mid+1,n = end,k=start;
while(i <= m && j <= n)
{
if(num[i] < num[j])co...
分类:
其他好文 时间:
2014-08-27 13:04:57
阅读次数:
247
发现一个小小的 逆序数里真的藏了好多东西啊=-=解决这题 你需要知道一点...对于一串给定的数字 我随便写一串吧..index: 0 1 2 3 4value: 4 8 7 5 6 这时候 总的逆序对数是 3+2=5 假如我们只能进行相邻元素的交换 这最好情况是什么呢?那肯定就是...
分类:
其他好文 时间:
2014-08-26 17:12:06
阅读次数:
170
归并排序是建立在归并操作上的一种有效的排序算法。该算法是採用分治法(Divide and Conquer)的一个很典型的应用。首先考虑下怎样将将二个有序数列合并。这个很easy,仅仅要从比較二个数列的第一个数,谁小就先取谁,取了后就在相应数列中删除这个数。然后再进行比較,假设有数列为空,那直接将还有...
分类:
其他好文 时间:
2014-08-26 15:01:46
阅读次数:
209
这是我的博文系列《内部排序算法》的第一篇。所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。所谓内部排序,是指在排序过程中,若整个文件都是放在内存中处理,排序时不涉及数据的内、外存交换(外排序的定义则相反)。
内部排序法按照策略可以划分为五类:插入排序、选择排序、交换排序、归并排序和分配排序。待排文件的存储方式采用顺序表(或直接用向量)作为存储结构(其他的...
分类:
其他好文 时间:
2014-08-26 00:31:45
阅读次数:
352