算法-理论
向上的胡萝卜
这个作者很懒,什么都没留下…
展开
-
快速排序
public void quicksort(int[] arr, int start, int end) { int i = start; int j = end; int pivot = arr[start]; while(i while (i i++; } while (i pivot ){ j--; } if(i int tmp = arr[i]; arr[i]原创 2016-03-02 20:23:59 · 273 阅读 · 0 评论 -
冒泡排序
int[] numbers = new int[]{13,4,2,8,90,23,14}; int size = numbers.length; for(int i = 0; i < size-1; i++) { for(int j = i + 1; j< size; j++) { if(numbers[i] > numbers[j]) { int tmp = numbers[i];原创 2016-03-02 18:35:17 · 197 阅读 · 0 评论 -
选择排序
public void selectSort(int[] arr){ for(int i = 0; i<arr.length; i++) { int min = arr[i]; int min_j = i; for(int j =i+1; j<arr.length;j++){ if(arr[j]<min){ min = arr[j]; min_j = j;原创 2016-03-03 09:27:16 · 216 阅读 · 0 评论 -
插入排序
public void insertSort(int[] arr) { int size = arr.length; for(int i = 1; i<size;i++){ if(arr[i] < arr[i-1]) { int tmp = arr[i]; int j = i-1; while(j >= 0 && arr[j] > tmp) { arr[j+1]原创 2016-03-03 08:57:29 · 255 阅读 · 0 评论 -
归并排序
public void mergeSort(int[] arr, int low, int high) { int mid = (low+high) / 2; if(low<high) { mergeSort(arr, low, mid); mergeSort(arr, mid+1, high); merge(arr, low, mid, high); } } private原创 2016-03-03 17:01:30 · 370 阅读 · 0 评论 -
表-ArrayList的实现
待写入。 着重增删该查的效率,迭代器的使用, 为什么迭代的时候remove还是很慢 迭代器使用了内部类来实现。好好看原创 2016-03-07 23:25:22 · 231 阅读 · 0 评论 -
表-LinkedList
LinkedList是一个双向列表,并实现了迭代器可以存储不同类型的数据向链表中插入或删除节点无需调整结构的容量特别适合以排序的顺序动态的添加新元素数组适合数据的数量是有上限的情况,而链表适合元素数量不固定的情况 增:只在末尾插入的话,O(1),如果是中间插入的话,O(n)删:O(n),当然在迭代器中删除的时候为O(1)改:O(1)查:通过索引查找O(N),遍历查找的话,为O原创 2016-03-08 15:34:13 · 178 阅读 · 0 评论 -
表-Stack栈
后进先出表 基本操作就是push、pop、top 增加:O(1),如果需要扩容的话,O(n) 删除:O(1) 应用: 1.检查平衡符号。开放符号放到栈中,如果是封闭符合,从栈中去除,查看是否配对。这是一个联机算法 2.后缀表达式。不需要优先级 3.中缀到后缀的转换。需要优先级 4.方法调用。尾递归。原创 2016-03-08 16:34:31 · 217 阅读 · 0 评论 -
表-队列
队列就是先进先出表 实现上基本采用循环数组实现 应用:生产消费者模式原创 2016-03-08 17:19:53 · 225 阅读 · 0 评论