10 2013 档案

快速寻找满足条件的两个数
摘要:在一个数组中能否快速找出两个数字,让这两个数字之和等于一个给定的值——《编程之美》 最简单的方法: 穷举法1 def printInts(arr, sum):2 size = len(arr)3 for i in range(size):4 for j in range(i + 1, size):5 if (arr[i] + arr[j]) == sum:6 print (arr[i], arr[j]) 算法简单,但效率不高,时间复杂度N(N-1)/2 查找法: 求两个数字之和,假定给定的和为s... 阅读全文

posted @ 2013-10-28 16:36 Arts&Crafts 阅读(230) 评论(0) 推荐(0) 编辑

算法题练习1
摘要:来自搜狗的一道笔试题一个长度为n的数组a[0],a[1],...,a[n-1]。现在更新数组的名个元素,即a[0]变为a[1]到a[n-1]的积a[1]变为a[0]和a[2]到a[n-1]的积,...,a[n-1]为a[0]到a[n-2]的积。程序要求:要求具有线性复杂度。不能使用除法运算符。首先这题最简单的方法:def change(a): sum = 1 size = len(a) for i in range(size): sum = sum * a[i] for i in range(size): a[i] = sum / a[i]很... 阅读全文

posted @ 2013-10-27 19:04 Arts&Crafts 阅读(271) 评论(0) 推荐(0) 编辑

堆排序
摘要:堆排序过程: 1:建立堆(大根堆或者小根堆) 2:交换第一个和最后一个。 3:堆调整。 其实整个过程最核心的算法就是对调整: 1 #include 2 3 //交换 4 static void swap(void *a[], int i, int j){ 5 void *tmp; 6 tmp = a[i]; 7 a[i] = a[j]; 8 a[j] = tmp; 9 }10 11 //堆调整12 static void heapify(void **ar, int(*cmp)(const void *, const void *), int i... 阅读全文

posted @ 2013-10-23 23:36 Arts&Crafts 阅读(244) 评论(0) 推荐(0) 编辑

java线程同步问题
摘要:Java面试当中,线程可以说是必考内容,在看面试题的时候发现一遍很全的讲解Java面试题的博客:http://blog.csdn.net/csh624366188/article/details/8070266 感觉里面讲线程的一段很不错:区别wait和slepp的:(网上的答案:sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notify 阅读全文

posted @ 2013-10-17 22:50 Arts&Crafts 阅读(350) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示