目录: 1、插入排序算法伪码 2、插入排序c++实现 3、归并排序算法伪码 4、归并排序c++实现 5、总测试程序内容: 1、插入排序算法伪码 Insertion_sort(A[],n) //数组下标从1开始 for j 0 and A[i]>key A[i+1] 2 void insert...
分类:
其他好文 时间:
2014-09-01 17:06:53
阅读次数:
284
一、Arrays.sort()数组排序JavaArrays中提供了对所有类型的排序。其中主要分为Primitive(8种基本类型)和Object两大类。 基本类型:采用调优的快速排序; 对象类型:采用改进的归并排序。1、对于基本类型源码分析如下(以int[]为例): Java对Primitiv...
分类:
编程语言 时间:
2014-09-01 12:01:33
阅读次数:
259
当我们需要对链表进行排序时,由于不能对它的元素进行随机访问,所以更适合使用归并排序,大名鼎鼎的快速排序用到链表上,效率也很低,原因还是在于不能对链表中的元素进行随机访问,同理,采用堆排序更是不可能的事情。对单链表进行归并排序,单链表与数组相比只能顺序访问每个元素,因此在使用二路归并排序时关键在于找到...
分类:
其他好文 时间:
2014-08-31 22:48:52
阅读次数:
431
归并排序,其的基本思路就是将数组分成二组A,B,如果这二组组内的数据都是有序的,那么就可以很方便的将这二组数据进行排序。如何让这二组组内数据有序了?可以将A,B组各自再分成二组。依次类推,当分出来的小组只有一个数据时,可以认为这个小组组内已经达到了有序,然后再合并相邻的二个小组就可以了。这样通过先递...
分类:
其他好文 时间:
2014-08-30 20:25:49
阅读次数:
293
本章节主要证明对包含n个元素的输入序列来说,任何比较排序在最坏情况下都要经过omega(nlgn)次比较。从而证明归并排序和堆排序是渐近最优的。同时,介绍了三种线性时间复杂度的排序算法:计数排序、基数排序和桶排序。1. 排序算法的下界在确定排序算法的下界时,借助决策树模型。决策树模型是一棵完全二叉树...
分类:
其他好文 时间:
2014-08-29 18:01:18
阅读次数:
239
题目:
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
解析:合并k个有序链表,最后返回一个总的有序链表,分析并描述其复杂度。该题的实质为归并排序,平均时间复杂度为O(NlogN)。
...
分类:
其他好文 时间:
2014-08-29 11:05:07
阅读次数:
225
归并排序的核心思想是分治原则:即将问题分解、解决、合并。问题分解师将n个元素分成n/2个元素的子序列;问题解决是用合并排序法对两个子序列进行递归排序;问题合并是利用已排好的两个子序列合并为新的序列,得到排序结果。可以看出,对已序序列的合并是问题关键。
1.合并已序序列:过程用图来表示吧!
#define INFTY 2147483647
void Merge(int a[],int low,i...
分类:
其他好文 时间:
2014-08-29 00:09:46
阅读次数:
278
void BubbleSort(int R[],int n) //冒泡排序 时间复杂度O(n2)
{
int i,j,temp,flag;
for(i = n;i>=2;i--)
{
flag = 0;
for(j=2;jR[j])
{
temp = R[j-1];
R[j-1] = R[j];
R[...
分类:
编程语言 时间:
2014-08-28 22:45:43
阅读次数:
269
最近忙着复习找工作,熟悉了下排序算法,动手写了一下,发现有些问题的边界条件还是没有考虑清楚,不过好在调试成功。不稳定排序:堆排序,快速排序,希尔排序;稳定排序:插入排序,冒泡排序,选择排序,归并排序,基数排序等。插入排序算法代码:void InsertSort(int A[],int n){ ...
分类:
其他好文 时间:
2014-08-28 19:39:25
阅读次数:
287
有些人说 归并排序的递归版本实用性差 可读性强非递归版本恰好相反我觉得 也没那么明显差距吧....其实非递归版本也不难理解的假如 我们需要进行排序的数组的长度为 len 每次的子排序数组区间为size那么我们首先将它拆成 len个size为1的小区间 然后2个相邻的进行合并merge排序 这时候 你...
分类:
其他好文 时间:
2014-08-27 20:27:18
阅读次数:
346