一、单例模式的写法:

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单例模式等一些程序的写法....持续更新...的更多相关文章

  1. Java日常错误及需要注意细节,持续更新......

    记录日常工作中一些容易被忽视的错误及细节,持续更新...... 一.问题:HashMap<Long, String>中,用get(Integer key)取不到值 Map<Long, ...

  2. C#、Java中的一些小知识点总结(持续更新......)

    前言:在项目中,有时候一些小的知识,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小知识点,以备用,并持续更新...... 1.禁用DataGridV ...

  3. Android 和 iOS 应用程序开发对比 [持续更新]

    1.Android 用字典模式统一管理应用程序中UI上用到的所有字符串. 比如文本框的默认文本.按钮的名字等等.表现形式:XML文件 Android中 "@string/text_filed ...

  4. 微信小程序的坑(持续更新中)

    参与微信小程序开发有一段时间了,先后完成信息查询类和交易类的两个不同性质的小程序产品的开发:期间遇到各种各样的小程序开发的坑,有的是小程序基础功能不断改进完善而需要业务持续的适配,有的是小程序使用上的 ...

  5. 微信小程序入门(持续更新)

    微信小程序的主要文件介绍: . js:脚本文件 .json:配置文件 .wxss:样式表文件 .wxml:页面 微信小程序差不多也是和mvc模式差不多的,采用数据和页面分离的模式,在js上写的数据可以 ...

  6. [置顶] 【其他部分 第一章 矩阵】The C Programming Language 程序研究 【持续更新】

    其他部分 第一章 矩阵 一.矩阵的转置   问题描述: 编写函数,把给定的任意一个二维整型矩阵转换为其转置矩阵. 输入: 1 2 3 4 5 6 输出: 1 4 2 5 3 6 分析 题目要求编写一个 ...

  7. Java的一些良好习惯及细节------持续更新中...

    1.在做条件判断时,不要将变量放在判断符的左边,这样做可以防止出现空指针异常,以字符串比较为例: String name = "Tom"; //这种方式不推荐,如果变量name为空 ...

  8. java与C#的基础语法区别--持续更新

    1.判断字符串是否相等 java : equals()比较的是对象的内容(区分字母的大小写格式),但是如果使用“==”比较两个对象时,比较的是两个对象的内存地址,所以不相等.即使它们内容相等,但是不同 ...

  9. 2017.4.26 慕课网--Java 高并发秒杀API配置文件(持续更新)

    新建项目,new maven project. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...

随机推荐

  1. [转]VS2015编译的程序在其他机器上缺少msvcp120.dll

    http://www.lai18.com/content/1159618.html 1. 今天分享一个自己在开发过程中遇到的困难. 用VS2015开发了一个windows客户端(win32项目),在自 ...

  2. lua劈分字符串方法及实例

    由于工作项目需要,最近需要用lua来写一些脚本.然而lua并不想java那样有很多的好用的api,很多方法得我们自己来编写和封装,就比如今天碰到的劈分字符串,查找资料后只能自己写了一个. 代码如下 - ...

  3. 【SQL Server高可用性】数据库复制:SQL Server 2008R2中数据库复制

    经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使用链接服务器+触发器,来实现数据同步,但当要同步的数据表比较多,那么可以考虑用数据库复制技术,来实现数据的同步. 一.使用场景 ...

  4. c# lambda表达式学习

    1. 普通绑定: public void button1_Click(object sender, EventArgs e) { MessageBox.Show("ok"); } ...

  5. fib博弈

    链接:https://www.nowcoder.com/acm/contest/77/G来源:牛客网  幼儿园开学了,为了让小盆友们能尽可能的多的享受假期.校长大人决定让小盆友分批到校,至于每批学生来 ...

  6. google搜索 site:pku.edu.cn inurl:aspx 即可查找所有动态网页 =====html(静态网页) asp(动态) jsp(动态) php(动态) cgi(网络程序) aspx(动态)

    shodan shodan和我们国内的钟馗之眼是一种搜索引擎,他们区别于百度等引擎,他们只爬设备,只爬联网设备. 网址为: https://www.shodan.io/ Shodan,也有人把他叫撒旦 ...

  7. 获取div的高度

    1.获取div的文档总高度(必须DOM操作): var scrollHeight=document.getElementById("inner").scrollHeight; // ...

  8. 如何在.Net的MySqlCommand里面使用MySql用户自定义变量?

    Mysql使用@符号代表变量,但C#也恰好使用@代表用户自定义变量,这样两者就会正好冲突了. SELECT () AS rowId, u.*, r.RoleName FROM userinfo u L ...

  9. halcon之屌炸天的变形匹配(1)

    在日常工程应用中,我们通常通过halcon的 shape-based matching(形状匹配)进行各种定位, 如以前文章介绍的这样,理解各个参数并灵活应用通常就能得到很好的匹配效果和匹配速度, 当 ...

  10. ViewPager实现引导页(添加导航点,判断是否第一次进入主界面)

    1.引导页的4个界面布局,里面加载一张背景图片 插入到guide的界面布局中(这里不用fragment) guide_background_fragment1.xml <?xml version ...