mengkuku

2012年9月17日 #

JAVA中运用数组的四种排序方法【转】

JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。

快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。

冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来。

选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组。

插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序。
<1>利用Arrays带有的排序方法快速排序

复制代码
 1 import java.util.Arrays;
2 public class Test2{
3 public static void main(String[] args){
4 int[] a={5,4,2,4,9,1};
5 Arrays.sort(a); //进行排序
6 for(int i: a){
7 System.out.print(i);
8 }
9 }
10 }
复制代码

<2>冒泡排序算法

复制代码
 1  public static int[] bubbleSort(int[] args){//冒泡排序算法
2 for(int i=0;i<args.length-1;i++){
3 for(int j=i+1;j<args.length;j++){
4 if (args[i]>args[j]){
5 int temp=args[i];
6 args[i]=args[j];
7 args[j]=temp;
8 }
9 }
10 }
11 return args;
12 }
复制代码

<3>选择排序算法

复制代码
 1 public static int[] selectSort(int[] args){//选择排序算法
2 for (int i=0;i<args.length-1 ;i++ ){
3 int min=i;
4 for (int j=i+1;j<args.length ;j++ ){
5 if (args[min]>args[j]){
6 min=j;
7 }
8 }
9 if (min!=i){
10 int temp=args[i];
11 args[i]=args[min];
12 args[min]=temp;
13 }
14 }
15 return args;
16 }
复制代码

<4>插入排序算法

复制代码
 1  public static int[] insertSort(int[] args){//插入排序算法
2 for(int i=1;i<args.length;i++){
3 for(int j=i;j>0;j--){
4 if (args[j]<args[j-1]){
5 int temp=args[j-1];
6 args[j-1]=args[j];
7 args[j]=temp;
8 }else break;
9 }
10 }
11 return args;
12 }
复制代码


以上就是java中的四种排序方法。不同的方法效率不一样,下面是不同的算法的比较和数据交换时的大O表示。

冒泡排序:比较O(N2) 数据交换O(N2)

选择排序:比较O(N2) 数据交换O(N)

插入排序:比较O(N2) 复制数据O(N)

在实际应用中,我们要尽量选择效率高的算法。

posted @ 2012-10-19 21:41 上帝也疯狂 阅读(148) | 评论 (0)编辑 收藏

[转]注册jdbc驱动程序的三种方式

 
1、比较常用
try{
       Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动
       String url="jdbc:mysql://localhost:3306/databasename";//数据库连接子协议
       Connection conn=DriverManager.getConnection(url,"username","password");
       Statement stmt=conn.createStatement();
       ResultSet rs=stmt.executeQuery("select * from tablename");
       while(rs.next()){//不断指向下一条记录
            System.out.println("DeptNo:"+rs.getInt(1));
            System.out.println("\tDeptName:"+rs.getString(2));
            System.out.println("\tLOC:"+rs.getString(3));
}         
    rs.close();
    stmt.close();
    conn.close();
}catch(ClassNotFoundException e){
   System.out.println("找不到指定的驱动程序类!");
}catch(SQLException e){
    e.printStackTrace();
}


2、通过系统的属性设置
try{
       System.setProperty("jdbc.driver","com.mysql.jdbc.Driver");//系统属性指定数据库驱动
       String url="jdbc:mysql://localhost:3306/databasename";//数据库连接子协议
       Connection conn=DriverManager.getConnection(url,"username","password");
       Statement stmt=conn.createStatement();
       ResultSet rs=stmt.executeQuery("select * from tablename");
       while(rs.next()){//不断指向下一条记录
            System.out.println("DeptNo:"+rs.getInt(1));
            System.out.println("\tDeptName:"+rs.getString(2));
            System.out.println("\tLOC:"+rs.getString(3));
}         
    rs.close();
    stmt.close();
    conn.close();
}catch(SQLException e){
    e.printStackTrace();
}

3、看起来比较直观的一种方式,注册相应的db的jdbc驱动,3在编译时需要导入对应的lib
try{
       new com.mysql.jdbc.Driver();//创建driver对象,加载数据库驱动
       String url="jdbc:mysql://localhost:3306/databasename";//数据库连接子协议
       Connection conn=DriverManager.getConnection(url,"username","password");
       Statement stmt=conn.createStatement();
       ResultSet rs=stmt.executeQuery("select * from tablename");
       while(rs.next()){//不断指向下一条记录
            System.out.println("DeptNo:"+rs.getInt(1));
            System.out.println("\tDeptName:"+rs.getString(2));
            System.out.println("\tLOC:"+rs.getString(3));
}         
    rs.close();
    stmt.close();
    conn.close();
}catch(SQLException e){
    e.printStackTrace();
}

posted @ 2012-10-16 19:34 上帝也疯狂 阅读(184) | 评论 (0)编辑 收藏

JAVA用JDBC连接数据库MSSQL、MYSQL(转)

经常忘记怎么连接数据库,贴出来备用

DBConnection.java

 

import java.sql.*;
import java.util.Locale;
import java.util.PropertyResourceBundle;

/**
* @author study
*
* 从给定的资源信息中得到数据库联接对象
*
*/
public class DBConnection {
Connection conn = null;

/**
* 从给定的资源文件中获得连接数据库的参数
*
*/
public boolean getConnect() {
   String str_URL = "";
   String str_userName = "";
   String str_passWord = ""; // the connect passWord
   String str_JdbcDriverName = ""; // the connect JDBCDriverName
   // Connection con = null;
   try {
    PropertyResourceBundle configBundle = (PropertyResourceBundle) PropertyResourceBundle
      .getBundle("common.jiangbin.dms.product",
        new Locale("cn", "CN"));

    if (configBundle == null) {
     System.out.println("文件product_cn_CN.properties读入错误");
     return false;
    }

    // the connect URL
    str_URL = configBundle.getString("ConnectString");
    // the connect userName
    str_userName = configBundle.getString("UserID");
    // the connect passWord
    str_passWord = configBundle.getString("Password");
    // the connect JDBCDriverName
    str_JdbcDriverName = configBundle.getString("JdbcDriverName");
    try {
     // 加载驱动程序
     Class.forName(str_JdbcDriverName).newInstance();
    } catch (ClassNotFoundException e) {
     System.out.println("Driver not found");
    }

    // DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
    // DriverManager.registerDriver(null);

    this.conn = DriverManager.getConnection(str_URL, str_userName,
      str_passWord);

   } catch (Exception e) {
    e.printStackTrace();
    return false;
   }
   return true;
}

/**
* Returns the conn.
*
* @return Connection
*/
public Connection getConn() {
   return conn;
}

/**
* Sets the conn.
*
* @param conn
*            The conn to set
*/
public void setConn(Connection conn) {
   this.conn = conn;
}

}

 

属性文件product_cn_CN.properties(用于MSSQL)

ConnectString=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DocManagerSystem
UserID=sa
Password=sa
JdbcDriverName=com.microsoft.jdbc.sqlserver.SQLServerDriver

 

属性文件product_cn_CN.properties(用于MYSQL)

ConnectString=jdbc:mysql://localhost:3306/mydata
UserID=sa
Password=sa
JdbcDriverName=com.mysql.jdbc.Driver

posted @ 2012-10-16 19:26 上帝也疯狂 阅读(1121) | 评论 (0)编辑 收藏

JAVA相关基础知识

     摘要: 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类...  阅读全文

posted @ 2012-09-17 15:38 上帝也疯狂 阅读(176) | 评论 (0)编辑 收藏