java单例模式等一些程序的写法....持续更新...
一、单例模式的写法:
public class MyFactory {
/**
* 饿汉式
*/
private static MyFactory instance = new MyFactory();
private MyFactory(){
}
public static MyFactory getInstance(){
return instance;
}
}
public class MyFactory {
/**
* 懒汉式(要注意处理线程安全问题)
*/
private static MyFactory instance;
public static MyFactory getInstance(){
if(instance == null){
synchronized(MyFactory.class){
if(instance == null){
instance = new MyFactory();
}
}
}
return instance;
}
}
二、选择排序算法:
package com.cy.array;
public class selectionSort {
/**
* 外层循环每遍历一次,就把最小的数选出来。
* 这是选择排序算法。
* @param args
*/
public static void main(String[] args) {
int a[] = {2, 4, 6, 7, 3, 5, 1, 9, 8};
for(int i=0; i<a.length; i++){
for(int j=i+1; j<a.length; j++){
if(a[j] < a[i]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
for(int i=0; i<a.length; i++){
System.out.print(a[i] + " ");
}
}
}
上面的选择排序算法有待改进的空间,因为:

4 和 3 这次的交换没必要;
应该是:找到比4小的3,然后拿3后面的数和3进行比较,如果还找到比3小的2,那么再拿2后面的数和2比较..,不断找到最小的那个数,
然后直接拿最小的那个数和4交换就完了。
程序改写:
package com.cy.array;
public class selectionSort2 {
public static void main(String[] args) {
int a[] = {2, 4, 6, 7, 3, 5, 1, 9, 8};
/**
* 用k记录最小数的位置;
* 假设第一次找到最小数的位置就是i;
* 如果k位置后面的a[j]比a[k]还小,就更新k的位置;
*
* 做完内层循环之后,如果找到最小位置k 不是 刚开始定义的位置i,发生一次交换
*/
for(int i=0; i<a.length; i++){
int k = i;
for(int j=k+1; j<a.length; j++){
if(a[j] < a[k]){
k = j;
}
}
if(k != i){
int temp = a[i];
a[i] = a[k];
a[k] = temp;
}
}
for(int i=0; i<a.length; i++){
System.out.print(a[i] + " ");
}
}
}
三、冒牌排序算法:
package com.cy.array;
public class BubbleSort {
public static void main(String[] args) {
int a[] = {2, 4, 6, 7, 3, 5, 1, 9, 8};
/**
*
*
* 下标值只能到长度-1,所以i=a.length-1;
*/
for(int i=a.length-1; i>=1; i--){
for(int j=0; j<=i-1; j++){
if(a[j] > a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(int i=0; i<a.length; i++){
System.out.print(a[i] + " ");
}
}
}
四、二分法查找:
package com.cy.array;
public class BinarySearch {
public static void main(String[] args) {
int a[] = {1, 3, 6, 8, 9, 10, 12, 18, 20, 34};
int i = 12;
//查找i=12,在a数组中的位置
System.out.println(binarySearch(a, i));
}
/**
* 二分法查找算法
* 搜索一般是建立在排好序的基础之上;
* 二分法查找, 思路:
* 把数组排好序,将被查找数与数组中间位置的数进行比较;
* 如果 = 中间位置的数,返回该中间位置;
* 如果 > 中间位置的数,继续从右半边部分开始找..
* 如果 < 中间位置的数,继续从左半边部分开始找..
* @param a
* @param num
* @return
*/
public static int binarySearch(int a[], int num){
if(a.length == 0){
return -1;
}
int start = 0;
int end = a.length - 1;
int m = (start + end) / 2 ;
while(start <= end){
if(num == a[m]){
return m;
}else if(num < a[m]){
end = m - 1;
}else if(num > a[m]){
start = m + 1;
}
m = (start + end) / 2;
}
return -1;
}
}
--------------
java单例模式等一些程序的写法....持续更新...的更多相关文章
- Java日常错误及需要注意细节,持续更新......
记录日常工作中一些容易被忽视的错误及细节,持续更新...... 一.问题:HashMap<Long, String>中,用get(Integer key)取不到值 Map<Long, ...
- C#、Java中的一些小知识点总结(持续更新......)
前言:在项目中,有时候一些小的知识,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小知识点,以备用,并持续更新...... 1.禁用DataGridV ...
- Android 和 iOS 应用程序开发对比 [持续更新]
1.Android 用字典模式统一管理应用程序中UI上用到的所有字符串. 比如文本框的默认文本.按钮的名字等等.表现形式:XML文件 Android中 "@string/text_filed ...
- 微信小程序的坑(持续更新中)
参与微信小程序开发有一段时间了,先后完成信息查询类和交易类的两个不同性质的小程序产品的开发:期间遇到各种各样的小程序开发的坑,有的是小程序基础功能不断改进完善而需要业务持续的适配,有的是小程序使用上的 ...
- 微信小程序入门(持续更新)
微信小程序的主要文件介绍: . js:脚本文件 .json:配置文件 .wxss:样式表文件 .wxml:页面 微信小程序差不多也是和mvc模式差不多的,采用数据和页面分离的模式,在js上写的数据可以 ...
- [置顶] 【其他部分 第一章 矩阵】The C Programming Language 程序研究 【持续更新】
其他部分 第一章 矩阵 一.矩阵的转置 问题描述: 编写函数,把给定的任意一个二维整型矩阵转换为其转置矩阵. 输入: 1 2 3 4 5 6 输出: 1 4 2 5 3 6 分析 题目要求编写一个 ...
- Java的一些良好习惯及细节------持续更新中...
1.在做条件判断时,不要将变量放在判断符的左边,这样做可以防止出现空指针异常,以字符串比较为例: String name = "Tom"; //这种方式不推荐,如果变量name为空 ...
- java与C#的基础语法区别--持续更新
1.判断字符串是否相等 java : equals()比较的是对象的内容(区分字母的大小写格式),但是如果使用“==”比较两个对象时,比较的是两个对象的内存地址,所以不相等.即使它们内容相等,但是不同 ...
- 2017.4.26 慕课网--Java 高并发秒杀API配置文件(持续更新)
新建项目,new maven project. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...
随机推荐
- CodeForces 828E DNA Evolution(树状数组)题解
题意:给你一个串k,进行两个操作: “1 a b”:把a位置的字母换成b “2 l r s”:求l到r有多少个字母和s匹配,匹配的条件是这样:从l开始无限循环s形成一个串ss,然后匹配ss和指定区间的 ...
- Execution Order for the ApiController
Execution Order for the ApiController Assuming the request goes into the ApiController scope, the op ...
- [bug report] 当springboot报错 找不到类 javax.xml.bind.JAXBException
<!--以下四个依赖均是javax.xml.bind.JAXBException的依赖 在java6/7/8默认支持,java9不再支持--> <dependency> < ...
- 更改idea快捷键方式为eclipse风格
打开配置窗口 菜单栏中的File-settings 或者快捷键 ctrl+alt+s 设置keymap 在弹出的setting页面中左侧导航中选择Keymap: 在keymaps下拉列表中选择Ecli ...
- ZOJ 3769 Diablo III(分组背包)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3769 题意:有13种装备,每种装备值可以穿戴一种,特殊的就是双手武器和单手 ...
- python 简单的猜数字游戏
!/usr/bin/env python --encoding:utf-8-- import random think=random.randint(1,10) print ("...... ...
- python 操作Excel表格,解压zip包,压缩zip包,目录遍历
import zipfile import os,shutil import openpyxl file_list_pos="" fileName="" zip ...
- hdu4565矩阵快速幂
这题太坑了...刚开始以为可以用|a+sqrt(b) 1|水过...结果tle,还一直想明明我logn的做法怎么可能tle.. | 0 1| 实在无奈看的题解 (a+sqr ...
- uva-11021-全概率公式
https://vjudge.net/problem/UVA-11021 有n个球,每只的存活期都是1天,他死之后有pi的概率产生i个球(0<=i<n),一开始有k个球,问m天之后所有球都 ...
- 客户端链接Blog
Word 2013链接Blog 1.设置共享->发布至博客->发布至博客 2.新建博客账户 3.添加新建账户信息 注意:URL内为Blog名,而非用户名 a) 在"Type of ...