读李笑来老师的《把时间当做朋友》时,我正在与时间的无情流逝而作斗争,每天我都浪费了大把的时间在做一些无关紧要的事情上,或则在有一点空闲时间的时候去用于玩游戏、参见聚会等事情,然后要睡觉时才懊恼于没有把该做完的事做完就没时间了,于是告诫自己明天不要再如此浪费时间了,一定要把时间好好管理一下了。请注意:这里我认为要好好管理一下“时间”了!!!还有比这更搞笑的想法吗?在中国的古典文化中,睿智的人都不认为自己能够管理时间,他们只能感慨于时间的流逝飞快,而需要我们去珍惜时间。而西方文学里,上帝造人用了六天,注意!省内各地也只能用天来表示时间单位,而无法改变时间的流逝。从根本上来说,每个人的生命都是有限的,因为人们无法避免死亡,所以本质来说每个人从一出生开始,就在慢慢的、无法逃避的走向死亡。难怪每个人出生时都会号啕大哭,还有什么比才开始就看到结局跟悲催的是吗?所以人们所以对死亡感到恐惧,只是因为我们明知道会死,却无力改变什么,我们恐惧于死亡的过程。甚至于为了减缓自己的恐惧感去为自己厌恶的人构造了地狱,而为自己构造了天堂。
当每个人都痛苦的不得不接受自己总会死亡这个事实后,马上就会想到一个问题——怎么在有限的生命中活得更有滋味,更幸福?(不得不感慨人的适应性之强大,连死亡这种事都能快速接受)。那么,怎样才能算活的幸福呢?个人认为没有什么比成功带来的喜悦感更让人幸福的事了, 比较官方的说法是:实现自己的目标,体现出自己的价值,为社会进步贡献了自己的一份力量,于是名利双收,想想就幸福得要死了。
但是,需要我们确定的一件事就是,你怎么知道这样做一定能成功,这种方法的确有效吗?(鬼知道有没有用或则能不能成功)要知道,做一件事是需要时间金钱去投入的,如果知道这样做没效果或则说效果不好,那无疑会让人的幸福质数大打折扣。所以,如果不能确定它是否有效或正确,那我还去学习它,不是成傻瓜?于是人们就真的不去学习了,还为自己找了一个强大无比的理由。但是,另一种态度是——正因为不知道这东西学了是否有用,他才有可能更有价值。这两种做法所带来截然不同的结果,想想就知道。
事实上我会经常抱怨:这个事情我这个的没兴趣做、我对这个专业真的没兴趣,于是,我又给自己的懒惰找了一个体面的理由——既然没兴趣、不喜欢我干嘛还要去做它呢?但是,如果我一开始就不抱怨,而是开始做,并且把这门课学好,学得比大多数人好,甚至最好!那……我还会说我对这专业不感兴趣吗?如果回答“会”,那一定是逗你玩。想想看吧,你把一件事做得比大多数人好,甚至做到最好,这是多么巨大的一种成就感啊!那还会对做这件事没兴趣吗?所以我们说的对某件事不感兴趣,只是因为我们不能把那件事做好,否则谁会对去做一件能做的很优秀的事不感兴趣呢?而一些认为自己对另一件事更有兴趣,只是因为他还没有开始去做那件事,没在那件事情上失败过,所以对其保持着巨大的兴趣。而一旦你放弃现有的一切去从头开始做另一件事时,一旦失败或遇到挫折就会对其生出巨大的失落感,这种情绪一旦蔓延,会将你带入痛苦的深渊。所以,我们做事不要先问自己感不感兴趣,而应该先去尝试能不能做好,行动是最重要的。
本文链接:读《把时间当做朋友》,转载请注明。
关于算法的5个实例(基础)
1. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少 , 用递归算法实现。
该数列为斐波那契数列,规律为第三位为前两位之和。
2. 求表达式的值,写出一种或几种实现方法: 1-2+3-4+……+m
3. 编程实现一个冒泡排序算法
* 冒泡排序:每次只能确定一位最大的,放置数组末尾 ,下次忽略已经确定的最大值继续比较
* 优点:稳定
* 缺点:效率底下(重复相邻数据比较,且每次比较都会进行位置置换)
* @param arr
* @return
*/
public static int[] bubbleSort(int[] arr) {
int len = arr.length; // 数组长度
for (int i = 0; i < len; i++) { // 遍历数组,用来限制内循环次数
for (int j = 1; j < len - i; j++) { // 内循环,依次减少1个次数(即为比较几次,就忽略后几位)
if (arr[j - 1] > arr[j]) { // 如果前一位大于后一位,即 前>后,需要交换位置
int k = arr[j - 1]; // 把前面的先缓存起来
arr[j - 1] = arr[j]; // 让前面的等于后一位
arr[j] = k; // 后一位等于前一位之前的缓存值
}
}
}
return arr;
}
4. 编程实现一个选择排序算法
* 继续从当前位的下一位开始,依次查找最小元素并换位,直至最后一位
* @param arr
* @return*/
public static int[] selectSort(int[] arr)
{
int len = arr.length;
for (int i = 0; i < len; i++)
{
int min = arr; // 每次都认为当前队列第一位为最小值,进行缓存
int index = i; // 缓存最小值(变化)坐标
for (int k = i + 1; k < len; k++)
{ // 向后比较
if (arr[k] <= min)
{ // 如果后一个小于等于前一个
min = arr[k]; // 更换最小值
index = k; // 变更最小值坐标
}
}
if (min == arr) // 相等则不变化,默认保留当前队列第一个为最小
continue;
// 循环完毕,找出了最小值的坐标,即为index,把当前坐标i元素和最小元素换位
int k1 = arr;
arr = arr;
arr = k1;
}
return arr;
}
5. 编程实现一个插入排序算法
* 插入排序,默认第一位已经排好序,从第二位开始依次向前比较,确定自己的位置后插入,即前一位小余或等于当前,且后一位大于当前。
* 插入后,自己新位置后面的元素依次向后移位, 完成一轮插入排序
* @param arr
* @return
*/
public static int[] insertSort(int[] arr) {
int len = arr.length;
for (int i = 1; i < len; i++) {
if (arr > arr) {
int k = arr;
int j = i;
while (j > 0 && arr[j - 1] > k) {
arr[j] = arr[j - 1];
j--;
}
arr[j] = k;
}
}
return arr;
}
本文链接:算法与编程,转载请注明。
没有评论:
发表评论