黑马学习笔记_常用算法复习
2015-08-24 14:20
429 查看
——- android培训、java培训、期待与您交流! ———-
快速排序
二叉树的基本操作
最后的总结:
快速排序
public class QuickSort { // 划分数组 public static int partition(long arr[], int left, int right, long point) { int leftPtr = left - 1; int rightPtr = right; while (true) { //向后移动索引 while (leftPtr < rightPtr && arr[++leftPtr] < point) ; //向前移动索引 while (leftPtr < rightPtr && arr[--rightPtr] > point) ; if (leftPtr >= rightPtr) { break; } else { long temp = arr[leftPtr]; arr[leftPtr] = arr[rightPtr]; arr[rightPtr] = temp; } } long temp = arr[leftPtr]; arr[leftPtr] = arr[right]; arr[right] = temp; return leftPtr; } // 递归实现快速排序 public static void sort(long[] arr, int left, int right) { if (right <= left) { return; } else { long point = arr[right]; int partition = partition(arr, left, right, point); sort(arr, left, partition - 1); sort(arr, partition + 1, right); } } //显示数组 public static void display(long[] arr) { for (long num : arr) { System.out.print(num + " "); } System.out.println(); } }
测试类 public class TestSort { public static void main(String[] args) { long[] arr=new long[4]; arr[0]=5; arr[1]=4; arr[2]=3; arr[3]=2; for(long num : arr){ System.out.print(num + " "); } //调用快速排序 BubbleSort.sort(arr); System.out.println(); //遍历显示数组内容 for(long num : arr){ System.out.print(num + " "); } } }
二叉树的基本操作
public class Tree { // 跟节点 public Node root; // 插入节点 public void insert(long value, String sValue) { // 封装节点 Node newNode = new Node(value, sValue); // 引用当前节点 Node current = root; Node parent = null; // 判断root为null if (root == null) { root = newNode; return; } else { while (true) { parent = current; if (value < current.data) { current = current.leftNode; if (current == null) { parent.leftNode = newNode; return; } } else { current = current.rightNode; if (current == null) { parent.rightNode = newNode; return; } } } } } // 查找节点 public Node find(long value) { Node current = root; while (current.data != value) { if (value < current.data) { current = current.leftNode; } else { current = current.rightNode; } if (current == null) { return null; } } return current; } // 前序遍历 public void frontOrder(Node localnode) { if (localnode != null) { System.out.println(localnode.data + "---" + localnode.sData); frontOrder(localnode.leftNode); frontOrder(localnode.rightNode); } } // 中序遍历 public void inOrder(Node localnode) { if (localnode != null) { inOrder(localnode.leftNode); System.out.println(localnode.data + "," + localnode.sData); inOrder(localnode.rightNode); } } // 后序遍历 public void afterOrder(Node localnode) { if (localnode != null) { afterOrder(localnode.leftNode); afterOrder(localnode.rightNode); System.out.println(localnode.data + "," + localnode.sData); } } }
测试类 public class TestTree { public static void main(String[] args) { Tree tree = new Tree(); tree.insert(12,"Jamea"); tree.insert(7,"ddd"); tree.insert(20,"Kobi"); tree.insert(30,"my"); tree.insert(10,"Kobi"); tree.insert(3,"my"); // System.out.println(tree.root.data); // System.out.println(tree.root.leftNode.data); // Node node = tree.find(30); // System.out.println(node.data+","+node.sData); tree.afterOrder(tree.root); } }
最后的总结:
刚开始学习算法时候,思路清晰,就是写不出来,后来经常练习渐渐地也就能够把自己思路用代码体现出来了,所以以后我会经常写博客,把自己的想法记录下来,也算是巩固以前学习的知识点了。
相关文章推荐
- session
- (转)C语言运算符优先级 详细列表
- 10个超棒jQuery表单操作代码片段
- jquery马赛克拼接翻转效果代码分享
- STM32 外设配置关键步骤-驱动出了问题,不妨瞧瞧--待续
- 匿名项目连载(二)--->登录流程
- hibernate 一些查询操作
- C++ 入门教程(三) Hello World 程序讲解
- Util:跟网络相关的工具类
- FMS2015:RISL软件架构保障系统持续高性能
- JVM(二):垃圾回收机制 && 弱引用
- ubuntu几个路径
- Android--多线程之Handler
- Android--多线程之Handler
- synchronized的用法
- 关于安装完公式编辑器后提示找不到word2007启动文件夹得解决方法
- 清0和置1
- 删除git已提交的多余文件
- android开发 获取WIFI和有线的IP地址
- linux nginx service nginx restart [fail]