#include "iostream.h"
using namespace std;
//因为i从0开始
#define LeftChild(i) (2*(i)+1)
//i-N范围内,创建最大堆
void maxHeap(int A[], int i, int N){
int tmp;
int child;
for(tmp=A[i];LeftChild(i)<N;i=child){...
分类:
编程语言 时间:
2014-12-04 20:03:10
阅读次数:
218
题目
Sort a linked list in O(n log n)
time using constant space complexity.
解答
O(nlogn)时间复杂度的排序有快排、堆排、归并,一般双向链表用快排、单向链表用归并,堆排两种都可以,以下使用归并排序:
/**
* Definition for singly-linked list.
* class Li...
分类:
其他好文 时间:
2014-12-03 21:32:25
阅读次数:
138
堆排序堆排序_百度百科堆排序_维基百科堆_百度百科堆 (数据结构)_维基百科堆排序是和快排、归并排序一样常见的复杂度为o(nlogn)的算法,速度比较快。那么,要进行堆排序,首先要把n个数据进行最大堆化(也就是把整个数据整理成一个最大堆)这样子首元素就是数组最大的元素了。把它和最后的元素进行交换,那...
分类:
编程语言 时间:
2014-12-01 00:32:19
阅读次数:
287
题目: 输入n个整数,输出其中最小的k个数
例如: 1 2 3 4 5 6 7 8 这8个数字,则最小的4个数字为1,2,3,4,
第一种:直接对其先排序,再取头几个数 这样最快是nlogn(快排或者堆排)
#include
using namespace std;
void partsort(int a[], int l, int r);
void QuickSort(int a[]...
分类:
其他好文 时间:
2014-11-30 21:36:12
阅读次数:
226
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比...
分类:
编程语言 时间:
2014-11-30 00:19:29
阅读次数:
228
堆排序基本步骤:1:把无序序列构成一个堆。2:交换堆顶元素和最后一个元素,交换之后由于堆结构破坏,重置堆。初始化堆和交换后的重置堆区别在于:初始化堆时从最后一个非叶子结点开始调整结点位子,交换堆顶元素后的重置只需要调节堆顶元素的位子。0;$end--){//交换堆顶和最后的一个元素 $tmp = ....
分类:
编程语言 时间:
2014-11-29 18:54:17
阅读次数:
154
六大比较排序算法:冒泡排序,选择排序,插入排序,归并排序,堆排序和快速排序,伪代码与C语言实现
分类:
编程语言 时间:
2014-11-28 11:34:09
阅读次数:
273
http://blog.csdn.net/hguisu/article/details/7776068 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时....
分类:
编程语言 时间:
2014-11-25 18:12:37
阅读次数:
153
1 #include 2 int h[101]; 3 int n; 4 void swap(int x,int y)//交换 5 { 6 int t=h[x]; 7 h[x]=h[y]; 8 h[y]=t; 9 }10 void siftdown(int i)//调整一次1...
分类:
编程语言 时间:
2014-11-24 13:27:00
阅读次数:
129