Android 常用算法
排序算法
简单排序算法
冒泡排序
- 两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止
直接插入排序
- 通过 n-i 次关键字间的比较,从 n-i+1 个记录中选出关键字最小的记录,并和第 i 个记录交换
简单选择排序
改进算法
快速排序(冒泡排序的改进)
- 先随机选择一个记录,比它大的放在右边,比它小的放在左边,采用递归的方式进行排序
- java 代码
/**
* 快排,先找一个记录,把大于他的放在右边,小的放在左边,然后采用递归的方式进行排序
*/
public class QuickSort2 {
public void quickSort(int[] array) {
if (array.length > 0) {
doQuickSort(array, 0, array.length - 1);
}
}
private void doQuickSort(int[] array, int left, int right) {
if (left >= right) {
return;
}
int low = left;
int high = right;
int temp = array[low];
while (low != high) {
while (low < high && array[high] > temp) {
high--;
}
array[low] = array[high];
while (low < high && array[low] < temp) {
low++;
}
array[high] = array[low];
}
array[high] = temp;
Utils.printArray(array);
doQuickSort(array, left, low - 1);
doQuickSort(array, high + 1, right);
}
public static void main(String[] args) {
QuickSort2 qs = new QuickSort2();
int[] a = {9, 1, 5, 8, 3, 7, 4, 6, 2};
qs.quickSort(a);
}
}
- 测试结果
2 1 5 8 3 7 4 6 9 -
1 2 5 8 3 7 4 6 9 -
1 2 4 3 5 7 8 6 9 -
1 2 3 4 5 7 8 6 9 -
1 2 3 4 5 6 7 8 9 -
希尔排序
堆排序
归并排序
查找算法
- 二分查找
常见数据结构题目
- 翻转链表
- 通过栈实现翻转
public static void reverseNode(Node head) {
Stack<Node> stack = new Stack<>();
while (head != null) {
stack.push(head);
head = head.next;
}
while (!stack.isEmpty()) {
System.out.println(stack.pop().data + "");
}
}
- 通过Arraylist,然后倒叙输出
public static void reverseNodeByArrayList(Node head) {
ArrayList<Node> list = new ArrayList<>();
while (head != null) {
list.add(head);
head = head.next;
}
for (int i = list.size()-1 ; i >= 0; i--) {
System.out.println(list.get(i).data);
}
}
- 两个栈实现一个队列
- 两个队列实现一个栈
- string 转 int
- 合并 k 个已排序的链表
- 给已排序的链表去重
- 思路: 当前节点跟下一个节点的值做比较,相等的话,就把当前节点指向下一个节点的下一个节点,把下一个节点去除了,就把重复的元素去掉了。
- Java 代码
public static Node deleteDuplicatesNodeFromLinkedlist(Node head) {
if (head == null) {
return null;
}
Node preNode = head;
Node currentNode = head.next;
while (currentNode != null) {
if (currentNode.data == preNode.data) {
preNode.next = currentNode.next;
} else {
preNode = currentNode;
}
currentNode = preNode.next;
}
return head;
}
Android 常用算法的更多相关文章
- Android常用开源项目
Android开源项目第一篇——个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Progre ...
- Android常用酷炫控件(开源项目)github地址汇总
转载一个很牛逼的控件收集帖... 第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.Gri ...
- Android 常用炫酷控件(开源项目)git地址汇总
第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.P ...
- Android 常用开发工具以及Mac常用软件
Android 常用的开发工具记录.其中包括AndroidStudio(IDEA)插件.Mac 上好用的软件以及国内知名Android开发者博客等. Android Studio 插件 codota ...
- 总结Objective-c常用算法
今天是星期天,想睡到10点起床,结果认为自己太奢侈了,不能这么做,于是把闹钟设置成了6:30:结果终于9:36醒了,起床,无缘无故迟了,好吧,就算太累了吧,周天就原谅自己一回.终于到了中午 ...
- Atitit 编程语言常用算法attilax总结
Atitit 编程语言常用算法attilax总结 1. 编译算法分类and 数据操作算法.1 1.1. Tab driver stat 状态转换表格算法1 1.2. Nest case 词法分析 ...
- GJM : 数据结构 - 轻松看懂机器学习十大常用算法 [转载]
转载请联系原文作者 需要获得授权,非法转载 原文作者将享受侵权诉讼 文/不会停的蜗牛(简书作者)原文链接:http://www.jianshu.com/p/55a67c12d3e9 通过本篇文章可以 ...
- Android 常用数据适配器SimpleAdapter
在<Android 常用数据适配器ArrayAdapter>中介绍了ArrayAdapter数据适配器.但是存在一个缺陷,那就是条目的图标都固定相同,要显示每个条目的图标都不相同,那么使用 ...
- Android常用设计模式(二)
Android常用设计模式之观察者模式 观察者设计模式在Android应用中会经常用到,模式原理类似于这样的场景: 用户订报纸,然后在报社登记,报社来统计用户(添加用户),用户也可以取消订阅,报社删除 ...
随机推荐
- E437: terminal capability "cm" required 错误出现的原因和解决方法
E437: terminal capability "cm" required 错误: 出现这个问题原因是没有配置export TERM=xterm 执行:export TERM= ...
- POJ 2003 Hire and Fire (多重链表 树结构 好题)
Hire and Fire Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 2316 Accepted: 655 Desc ...
- AndroidAnnotations库的使用
AndroidAnnotations(Code Diet) android高速开发框架简单介绍: 项目地址:https://github.com/excilys/androidannotations ...
- Android开发之底部导航栏标准
以下是封装的库源码: package com.example.oldtab; import java.util.ArrayList; import android.content.res.Resour ...
- PHP5.4 需要添加的configure参数
./configure --prefix=/usr/local/php --with-gd=/usr/local/gd --with-jpeg-dir=/usr/local/jpeg --with-p ...
- 【转】Jenkins怎么启动和停止服务
笔者没有把Jenkins配置到tomcat中,每次都是用命令行来启动Jenkins.但是遇到一个问题:Jenkins一直是开着的,想关闭也关闭不了.百度了一些资料,均不靠谱(必须吐槽一下百度).于是进 ...
- mac下phpstrom安装主题和主题推荐
phpstorm主题 在mac下finder下command+shift+G键到~/Library/Preferences/PhpStorm2016.2/colors,我的路径可能和你的不同,但是大同 ...
- Linux实例安装VNC Server实现图形化访问
引自阿里云: https://help.aliyun.com/knowledge_detail/41530.html
- clear session on close of browser jsp
关闭浏览器销毁session <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=" ...
- python web中的并发请求
python web可以选择django,也可以选择flask,它们的原理差不多.flask比较轻量,下面写一段flask程序来说明python web对并发请求的处理. app.py import ...