日志分类:个人

常见JS排序算法

2010年08月31日 14:55  |  分类:个人

Array.prototype.swap = function(i, j) {
var temp = this[i];
this[i] = this[j];
this[j] = temp;
}

冒泡排序:
Array.prototype.bubbleSort = function() {
for (var i = this.length – 1; i > 0; –i) {
for (var j = 0; j < i; ++j) {
if (this[j] > this[j + 1]) this.swap(j, j + 1);
}
}
}

选择排序:
Array.prototype.selectionSort = function() {
for (var i = 0; i < this.length; ++i) {
var index = i;
for (var j = i + 1; j < this.length; ++j) {
if (this[j] < this[index]) index = j;
}
this.swap(i, index);
}
}

插入排序:
Array.prototype.insertionSort = function() {
for (var i = 1; i < this.length; ++i) {
var j = i, value = this[i];
while (j > 0 && this[j - 1] > value) {
this[j] = this[j - 1];
–j;
}
this[j] = value;
}
}

谢尔排序:
Array.prototype.shellSort = function() {
for (var step = this.length >> 1; step > 0; step >>= 1) {
for (var i = 0; i < step; ++i) {
for (var j = i + step; j < this.length; j += step) {
var k = j, value = this[j];
while (k >= step && this[k - step] > value) {
this[k] = this[k - step];
k -= step;
}
this[k] = value;
}
}
}
}

快速排序(递归):
Array.prototype.quickSort = function(s, e) {
if (s == null) s = 0;
if (e == null) e = this.length – 1;
if (s >= e) return;
this.swap((s + e) >> 1, e);
var index = s – 1;
for (var i = s; i <= e; ++i) {
if (this[i] <= this[e]) this.swap(i, ++index);
}
this.quickSort(s, index - 1);
this.quickSort(index + 1, e);
}

快速排序(堆栈):
Array.prototype.stackQuickSort = function() {
var stack = [0, this.length - 1];
while (stack.length > 0) {
var e = stack.pop(), s = stack.pop();
if (s >= e) continue;
this.swap((s + e) >> 1, e);
var index = s – 1;
for (var i = s; i <= e; ++i) {
if (this[i] <= this[e]) this.swap(i, ++index);
}
stack.push(s, index - 1, index + 1, e);
}
}

归并排序:
Array.prototype.mergeSort = function(s, e, b) {
if (s == null) s = 0;
if (e == null) e = this.length - 1;
if (b == null) b = new Array(this.length);
if (s >= e) return;
var m = (s + e) >> 1;
this.mergeSort(s, m, b);
this.mergeSort(m + 1, e, b);
for (var i = s, j = s, k = m + 1; i <= e; ++i) {
b[i] = this[(k > e || j <= m && this[j] < this[k]) ? j++ : k++];
}
for (var i = s; i <= e; ++i) this[i] = b[i];
}

堆排序:
Array.prototype.heapSort = function() {
for (var i = 1; i < this.length; ++i) {
for (var j = i, k = (j - 1) >> 1; k >= 0; j = k, k = (k – 1) >> 1) {
if (this[k] >= this[j]) break;
this.swap(j, k);
}
}
for (var i = this.length – 1; i > 0; –i) {
this.swap(0, i);
for (var j = 0, k = (j + 1) << 1; k <= i; j = k, k = (k + 1) << 1) {
if (k == i || this[k] < this[k - 1]) –k;
if (this[k] <= this[j]) break;
this.swap(j, k);
}
}
}

Fuck

2010年07月16日 18:27  |  分类:个人

Fuck Fuck

没人把程序员当回事儿

2010年07月13日 10:02  |  分类:个人

编程对很多人来说有点神秘。这就造成了在公司内部,人们对编程的事情产生了很多怀疑和疑惑。 通常,当你不了解一个东西是怎样做成的时,你只能说:可能是这样吧。 如果你从没见过工地,你也许会认为几个星期就能建出一栋大楼。 事实上,在这样的时间内是可以完成这栋建筑的,只是能不能用就不知道了。 如果你看过房子如何建造,跟踪它的建造过程,你能从物理实物看到地基如何浇灌,钢架结构如何搭成,等等。 但给电脑编写程序,或建设一个网站却是不可见的。

除了程序员外,程序代码对其他人来说是接触不到的。程序的运行好像是大幕后发生的魔术戏法。 只有开发团队的成员才能知道程序是什么,怎么工作的,不能干什么。 从程序员的角度看问题,你就能得到最好的开发结果、项目评估数据和进度更新。 很多的A型性格的人对此不以为然,但事实毋庸置疑。

当客户提出他们想要什么东西,而且要在什么时候完成时,问题就开始出现了。 销售人员希望做成这笔交易。拜托,请告诉客户,他们的想法不现实,这个生意做不了。 这样做下去只能导致一场灾难。 我曾看见过工程统计部门把估算的工期消减一半,四处花钱去达成他们的销售,完成他们的任务。 直到最后有一天,事情的发展看起来都是程序员的错造成的。他们这样做结论是因为程序员是最容易责备的。

全文阅读 »

过瘾

2010年06月17日 21:23  |  分类:个人,资讯

这场踢的。过瘾啊!棒子还是那么粗暴,美其名曰积极!F……U……C……K!

团购网都疲软了

2010年06月7日 17:32  |  分类:个人

最近发现这些团购网们,都没什么新鲜的了。开始买冰淇凌了!

CPI如何升高

2010年06月7日 13:30  |  分类:个人

一个城市里有三个人,甲有5套房,不上班,靠收房租生活;乙有一套房,上班赚工资;丙是卖菜的,没有房,租房住。
忽然有天要收房产税了,丙说:“太好了,我没房,收那帮炒房人得税,我全力支持,房价大跌了,我就可以买房了。”;乙说:“没关系,我只有一套,收那帮炒房人得税,我支持,房价大跌了,我可以再买一套。”;甲说:“哦,房产税收多少?1%对吧,下个月房租涨5%。”
房租上涨了,丙很郁闷,想换个房子,发现大家房租都涨了,只好忍。不过也不能吃亏,明天菜价也涨5%,恩,就这么干。乙和甲去买菜,发现菜价涨了,很郁闷,想换个菜场,发现菜价都涨了,只好少吃点了。
于是乎,生活水平就这样下降了,CPI就这样升高了

Android Girl

2010年05月31日 10:18  |  分类:个人,玩乐

墨西哥湾漏油事件

2010年05月26日 10:08  |  分类:个人

看着已经污染的海岸,满身油污的鸟。真是揪心,人类有时候真是贱的要死!

2010南非世界杯主题曲 MV

2010年05月24日 13:00  |  分类:个人,影视

力量训练好处多

2010年05月24日 11:28  |  分类:个人

跑步、快走、跳舞、做操都是有氧运动,但是从运动力学角度来说,它们的节奏、力度对于健身来说是不够的。器械健身,实际上就是通过使用相关的器械,运动全身各部位,以最大程度地达到健身的目的。坚持科学的力量训练有很多好处:

延缓衰老

研究表明,不经常参加体育锻炼的人在20~25岁达到最大肌肉力量,以后每10年将会损失10%左右的肌肉重量和肌肉力量。到了60岁以后,力量的损失会更加迅速。随着年龄的增长,不仅运动能力大幅度下降,就连应付日常生活都会困难重重。肌肉力量下降的另一个重要表现是行动变得迟缓,步行速度降低,步子越迈越小。而经常参加力量训练的人可以把最佳状态保持到60岁以上。

全文阅读 »

Pages: 1 2 3 4 5 Next