文章列表
今天接连几次打开电视居然演的同一个电影《非诚勿扰》从一演到二,这两部片子之前看过,不得已从头到尾间断地再看了一次。但刚看完翻来覆去就怎么也想不起一个连贯的故事了,只是间歇记得,在第一部中秦奋稀里 ...
在一堆未排序的的数组中找第x大数
- 博客分类:
- 算法
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void exchange(int *pArray, int l, int r)
{
int tmp;
tmp=pArray[l];
pArray[l] = pArray[r];
pArray[r]=tmp;
}
int position(int *pArray, int p, int r)
{
int x = pArray[r];
int j = p;
int i = j -1;
for(; j ...
快速排序是一种分而治之的算法,从待排序数组中找到一个元素并把这个元素放到该位置,使该元素的左边元素全部小于该元素,该元素的右边元素都大于该元素,从而把这待排序列以该元素为界分成了两个子的序列,堆这两个子序列分别重复这个过程
#include <stdio.h>
void exchange(int *pArray, int l, int r)
{
int tmp = 0;
tmp = pArray[l];
pArray[l] = pArray[r];
pArray[r] = tmp;
}
/*
i在j的后面,相当于把j作为临时变量,如果j小于x, ...
卸载最前面,下面的所有讨论都是基于二叉堆
一:什么是堆:
堆是一个数组结构,可以看着为一颗完全二叉树,把这颗完全二叉树按层从上到下,每层从左至右编序号,每个序号所对应的元素即为数组中该序号的元素;该树出最后一层以外每一层都排满,最后一层从左至右,先左孩子再右孩子排列,如果有父节点没有排满孩子(无孩子或无右孩子),只可能是右边的父节点未排满孩子。
因此该结构有如下结构:
如果节点i,则它的左孩子为2*I,右孩子为2*i+1;原因:节点i所对应的深度为h=log2(i);所以左孩子为2^log2(i)+2*(i-i/2)=2i;
二:堆排序过程
先构建堆—》把最后一个节点和第一个节点互换—》调整堆 ...
做了很大思想斗争,还是来iteye安家了。记录点点滴滴,分享点点滴滴;希望能够结识更多的朋友。
最近有如下这几个打算:
1:学习
2:在网上没有找到合适的redis win 32 版本,计划移植到win 32上
3:做项目管理有好几年了,总结一下。
夯实基础、专注于云计算nosql、多媒体会议、项目管理;希望与各位朋友交流