码迷,mamicode.com
首页 >  
搜索关键字:快速排序 堆排序    ( 5090个结果
快速排序算法
快速排序算法。python实现。 1 # -*- coding: utf8 -*- 2 3 import random 4 5 def partition(mylist, low, high): 6 pivotkey = mylist[low] 7 while low = piv...
分类:其他好文   时间:2014-05-17 01:25:40    阅读次数:305
快速排序、堆排序和归并排序的实现
1、快速排序 通过选择轴值,一次划分都能确定该轴值得位置,其时间复杂度最好的情况(每次划分都恰好将区间平分为等长的两半)下为Ο(nlgn),最差情况(每次划分将区间分成0与n-1)为O(n^2)。其空间复杂度考虑递归的栈深为O(lgn)。 1 /********************...
分类:其他好文   时间:2014-05-16 19:24:46    阅读次数:361
LeetCode OJ - Sort List
题目: Sort a linked list inO(nlogn) time using constant space complexity.解题思路: 复杂度为O(n* logn) 的排序算法有:快速排序、堆排序、归并排序。对于链表这种数据结构,使用归并排序比较靠谱。递归代码如下:代码: /...
分类:其他好文   时间:2014-05-16 05:49:04    阅读次数:266
单链表的排序 快速排序 归并排序 quicksort mergesort
原理都很简单,关键是某些边界能否正确写对: #include #include using namespace std; class Node { public: int val; Node* next; Node(int val = 0):val(val),next(NULL){ } }; Node* quicksort(Node* head, Node* tai...
分类:其他好文   时间:2014-05-15 20:27:36    阅读次数:296
排序 之 堆排序 归并排序
堆的概念 堆是具有下列性质的完全二叉树:每个节点的值都大于或等于其左右孩子结点的值,称为大顶堆;或着每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。 堆排序 堆排序(Heap Sort)就是利用堆(假设利用大顶堆)进行排序的方法。它的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列...
分类:其他好文   时间:2014-05-15 16:18:31    阅读次数:329
java实现的集中排序算法
嗯,数据结构中,排序是不可少的,下面给出java版本的排序...
分类:编程语言   时间:2014-05-15 14:44:49    阅读次数:330
Segment Tree - Sum of given range
简单点说其实Segment Tree就是二分法的灵活运用。 需要的基础知识: 1 二分法 2 二叉树 3 最好熟悉堆排序 操作就是二分法和堆排序巧妙地合并起来。 有了这些基础知识Segment Tree就没有任何难度了。 参考原文: http://www.geeksforgeeks.org/segment-tree-set-1-sum-of-given-range/ ...
分类:其他好文   时间:2014-05-15 13:33:33    阅读次数:250
第七章 快速排序
快速排序最坏情况下时间复杂度是O(n*n),但是它平均时间复杂度是O(N*logn),并且常数因子很小,可实现就地排序,所以被作为内排序的常用排序方法. #include using namespace std; void swap(int &i,int &j) { int temp=i; i=j; j=temp; } int partition(int *vector...
分类:其他好文   时间:2014-05-15 06:05:35    阅读次数:254
位图排序
基于比较的排序时间复杂度至少为O(nlgn),在时间上堆排序和快速排序基本上都达到了比较排序的极限,如果要获取更快的排序速度,就需要找不是基于比较的排序方法,位图排序就是其中的一个。 位图排序是效率最高的排序算法,其时间复杂度是O(n),空间复杂度也非常小,但是要求输入的数据不能重复,而且要知道数据的范围。 位图排序的思想比较简单,用计算机的每一位表示一个数,一个int类型的变量就能表...
分类:其他好文   时间:2014-05-15 04:41:27    阅读次数:262
算法导论第六章 堆排序
建堆的时间复杂度是O(n),堆排序的时间复杂度是O(NLogN),具体算法如下所示: #include using namespace std; void swap(int &i,int &j) { int temp=i; i=j; j=temp; } void shiftDown(int *A, int start,int len) { int temp=A[...
分类:其他好文   时间:2014-05-13 13:55:15    阅读次数:270
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!