摘要: >>可变状态是至关重要的。 所有的并发问题都可以归结为如何协调并发状态的访问。可变状态越少,就越容易确保线程的安全性。 >>尽量将域声明成final类型,除非需要它们是可变的。 >>不可变对象一定是线程安全的。 不可变对象能极大地降低并发编程的复杂性,它们更为简单而且安全,可以任意共享而无需使用加锁 阅读全文
posted @ 2016-08-06 19:24 玉曲风 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 快速排序算法有几种种优化方式:基准点的选择,减去不必要的交换位置,优化小数组时的优化,递归的优化(在数组长度很短,用直接插入算法就行了) 时间复杂度(nlog2n)public class QuickSort { public static void main(String[] args) { in 阅读全文
posted @ 2016-08-06 19:05 玉曲风 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 归并排序,也就是二路归并排序 阅读全文
posted @ 2016-08-06 16:35 玉曲风 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 堆排序是对选择排序的改进(时间复杂度和希尔排序一样O(nlog2n)) 数据结构:完全二叉树(大顶堆,根节点都比左右节点大,小顶堆,根节点小于双亲节点) public class HeapSort { public static void main(String[] args) { int a[]= 阅读全文
posted @ 2016-08-06 16:20 玉曲风 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 希尔排序突破了O(n2),它的时间复杂度是O(nlog2n) 分组再排序 public insertSort(int a[],int n){ int i,j,temp; int gap=n;//间隔 do{ gap=gap/3+1; for(int i=gap;i<n-1;i++){ if(a[i] 阅读全文
posted @ 2016-08-06 15:01 玉曲风 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 向已经排好序的序列,插入一个元素 public insertSort(int a[],int n){ int i,j,temp; for(int i=1;i<n-1;i++){ if(a[i]<a[i-1]){ temp=a[i];//作为哨兵 for(j=i-1;k[j]>temp;j--){ k 阅读全文
posted @ 2016-08-06 14:46 玉曲风 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 选择排序:先不交换,先找到最小的,找到了再交换 public void selectSort(int a[],int n){ int i,j,temp,min;//min存放最小元素的位置 for(i=0;i<n;i++){ min=i; for(j=i+1;j<n;j++){ if(a[j]<a[ 阅读全文
posted @ 2016-08-06 13:27 玉曲风 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 冒泡的排序是两两比较(相邻的元素),以下算法算不上冒泡排序 //a需要排序的数组,n数组长度 public void bubbleSort(int a[],int n){ int temp; for(int $i=0;$i<n-1;$i++) for(int j=i+1;j<n;j++){ if(a 阅读全文
posted @ 2016-08-06 13:12 玉曲风 阅读(131) 评论(0) 推荐(0) 编辑