几种基础排序的学习冒(冒泡)>选(选择)>插(插入)>希(希尔)>快(快速)>归(归并)>堆时间复杂度冒-O(n^2)选-O(n^2)插-O(n^2)希-O(n*logn)快-O(n*logn)归-O(n*logn)堆-O(n*logn)(1)冒泡排序:package com.jp.algorith...
分类:
其他好文 时间:
2014-06-28 17:13:40
阅读次数:
156
问题
归并排序是一种常用的排序方法,本文讲述了其基本思想以及用python实现的方法。
在python中,有一个非常强大的模块heapq,提供了merge方法,让归并排序在python中更简单了。
思路说明
归并操作过程:
1. 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
2. 设定两个指针,最初位置分别为两个已经排序序列的起始位置
3. 比较两...
分类:
编程语言 时间:
2014-06-24 21:07:01
阅读次数:
269
Kruskal算法用于计算一个图的最小生成树。这个算法的步骤如下:
按照边的权重从小到达进行排序
依次将每条边增加到最小生成树中,除非这条边会造成回路
实现思路
第一个步骤需要对边进行排序,排序方法在之前的章节中已经介绍了很多,可以使用优先级队列进行实现,也可以使用归并排序进行实现,这里采用归并排序。
第二个步骤需要判断是否会造...
分类:
其他好文 时间:
2014-06-22 21:43:31
阅读次数:
204
Ultra-QuickSort
Time Limit: 7000MS
Memory Limit: 65536K
Total Submissions: 39279
Accepted: 14163
Description
In this problem, you have to analyze a particular sorting...
分类:
其他好文 时间:
2014-06-22 15:38:06
阅读次数:
168
归并排序
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
算法步骤:
1. 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
2. 设定两个指针,最初位置分别为两个已经排序序列的起始位置
3. 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到...
分类:
其他好文 时间:
2014-06-22 14:22:14
阅读次数:
187
Sort a linked list in O(n log n)
time using constant space complexity.
这道题目非常简短的一句话,给链表排序,看到nlogn,我们可以来简单复习一下排序。首先说一下这个nlogn的时间复杂度(根据决策树我们可以得出这个界限),是基于比较排序的最小上限,也就是说,对于没有一定范围情况的数据来说,最快的排序思路就是归并和快速排...
分类:
其他好文 时间:
2014-06-22 09:02:54
阅读次数:
250
Sort a linked list inO(nlogn) time using constant space complexity.本题利用归并排序即可归并排序的核心是将两部分合成一部分,故开始要将链表分成两部分,利用快慢两个指针,当快指针跑到链表尾部时,慢指针恰好在中间,故可以将链表分成两部分然...
分类:
其他好文 时间:
2014-06-21 12:20:11
阅读次数:
188
归并排序是建立在归并操作上的一种有效的排序算法。该算法是採用分治法(Divide and Conquer)的一个很典型的应用。首先考虑下怎样将将二个有序数列合并。这个很easy,仅仅要从比較二个数列的第一个数,谁小就先取谁,取了后就在相应数列中删除这个数。然后再进行比較,假设有数列为空,那直接将还有...
分类:
其他好文 时间:
2014-06-20 15:28:28
阅读次数:
153
归并排序(merging sort): 包含2-路归并排序, 把数组拆分成两段, 使用递归, 将两个有序表合成一个新的有序表.归并排序(merge sort)的时间复杂度是O(nlogn), 实际效果不如快速排序(quick sort)和堆排序(heap sort),但是归并排序是稳定排序, 而.....
分类:
其他好文 时间:
2014-06-17 23:47:38
阅读次数:
299