`
chulian
  • 浏览: 3017 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
java面试——java控制台打印三角形总结 三角形 java面试——java控制台打印三角形总结
java面试——java控制台打印三角形总结
关键字: 三角形 
在公司面试中经常碰到的问题,我总结了一下,大概就这么多,其实挺简单的,但是在面试的时候没有IDE的帮助,如果想一次性写对,对我本人来说还是有点难度的,不是不知道思路,而是很有可能在初始化变量i ,j的时候,还是有是否是等于的时候容易出错,细心点应该没什么问题

Java代码  
package com.xyq.demo;   
public class Triangle {   
  
    /**  
     * @param args  
     */  
       
    public static void main(String[] args) {   
        a(); //打印正等腰三角   
        b(); //打印倒等腰三角   
        c(); //打印直边靠左正直角三角   
        d(); //打印直边靠右正直角三角   
        e(); //打印直边靠左倒直角三角   
        f(); //打印直边靠右倒直角三角   
        g(); //打印底边靠左钝角角三角   
        h(); //打印底边靠右钝角角三角   
    }   



    /**  
     *  作用:打印正等腰三角  
     */  
    public static void a(){   
        System.out.println("打印正等腰三角");   
        int i ,j;   
        for(i=1;i<=5;i++){   
            for(j=5;j>i;j--){   
                System.out.print(" ");   
            }   
            for(j=0;j<i*2-1;j++){   
                System.out.print("*");   
            }   
            System.out.println();   
        }   
    }   
    


    /**  
     * 打印倒等腰三角  
     */  
    public static void b(){   
        System.out.println("打印倒等腰三角");   
        int i ,j ;   
        for(i=1;i<=5;i++){   
            for(j=1;j<i;j++){   
                System.out.print(" ");   
            }   
            for(j=10;j>i*2-1;j--){   
                System.out.print("*");   
            }   
            System.out.println();   
        }   
    }   





    /**  
     * 打印直边靠左正直角三角  
     */  
    public static void c(){   
        System.out.println("打印直边靠左正直角三角");   
        int i ,j ;   
        for(i=1;i<=5;i++){   
            for(j=0;j<i;j++){   
                System.out.print("*");   
            }   
            System.out.println();   
        }   
    }   
       



    /**  
     * 打印直边靠右正直角三角  
     */  
    public static void d(){   
        System.out.println("打印直边靠右正直角三角");   
        int i ,j;   
        for(i=1;i<=5;i++){   
            for(j=5;j>i;j--){   
                System.out.print(" ");   
            }   
            for(j=0;j<i;j++){   
                System.out.print("*");   
            }   
            System.out.println();   
        }   
    }   




    /**  
     * 打印直边靠左倒直角三角  
     */  
    public static void e(){   
        System.out.println("打印直边靠左倒直角三角");   
        int i ,j;   
        for(i=1;i<=5;i++){   
            for(j=5;j>=i;j--){   
                System.out.print("*");   
            }   
            System.out.println();   
        }   
    }   



    /**  
     * 打印直边靠右倒直角三角  
     */  
    public static void f(){   
        System.out.println("打印直边靠右倒直角三角");   
        int i ,j;   
        for(i=1;i<=5;i++){   
            for(j=1;j<i;j++){   
                System.out.print(" ");   
            }   
            for(j=5;j>=i;j--){   
                System.out.print("*");   
            }   
            System.out.println();   
        }   
    }   



    /**  
     * 打印底边靠左钝角角三角  
     */  
    public static void g(){   
        System.out.println("打印底边靠左钝角角三角");   
        int i ,j ;   
        for(i=1;i<=5;i++){   
            for(j=0;j<i;j++){   
                System.out.print("*");   
            }   
            System.out.println();   
        }   
        for(i=1;i<5;i++){   
            for(j=5;j>i;j--){   
                System.out.print("*");   
            }   
            System.out.println();   
        }   
    }   



    /**  
     * 打印底边靠右钝角角三角  
     */  
    public static void h(){   
        System.out.print("打印底边靠右钝角角三角");   
        int i,j;   
        for(i=0;i<=5;i++){   
            for(j=5;j>i;j--){   
                System.out.print(" ");   
            }   
            for(j=0;j<i;j++){   
                System.out.print("*");   
            }   
            System.out.println();   
        }   
        for(i=1;i<5;i++){   
            for(j=0;j<i;j++){   
                System.out.print(" ");   
            }   
            for(j=5;j>i;j--){   
                System.out.print("*");   
            }   
            System.out.println();   
        }   
    }   
}  
java面试——单例模式 单例模式 java面试——单例模式
java面试——单例模式
关键字: singleton 
在进公司java面试时,容易考到的题目,singleton模式的特点并写一个singleton。

单例模式有以下的特点:
1.单例类只可有一个实例。
2.单例类必须自己创建自己这惟一的实例。
3.单例类必须给所有其他对象提供这一实例。

Java代码  
package com.xyq.demo;   
  
public class Singleton {   
    private static Singleton singleton;   
    private Singleton() {   
    };   
    public static Singleton getInstance() {   
        if (singleton == null)   
            singleton = new Singleton();   
        return singleton;   
    }   
}   
  
// 测试类   
class singletonTest {   
    public static void main(String[] args) {   
        Singleton s1 = Singleton.getInstance();   
        Singleton s2 = Singleton.getInstance();   
        if (s1 == s2)   
            System.out.println("s1 is the same instance with s2");   
        else  
            System.out.println("s1 is not the same instance with s2");   
    }   
}  

package com.xyq.demo;

public class Singleton {
	private static Singleton singleton;
	private Singleton() {
	};
	public static Singleton getInstance() {
		if (singleton == null)
			singleton = new Singleton();
		return singleton;
	}
}

// 测试类
class singletonTest {
	public static void main(String[] args) {
		Singleton s1 = Singleton.getInstance();
		Singleton s2 = Singleton.getInstance();
		if (s1 == s2)
			System.out.println("s1 is the same instance with s2");
		else
			System.out.println("s1 is not the same instance with s2");
	}
} 输出:  s1 is the same instance with s2

 

恶汉式单例类

Java代码  
package com.xyq.demo;   
  
public class Singleton {   
    private static final Singleton instance = new Singleton();   
    private Singleton() {   
    }   
    public static Singleton getInstance() {   
        return instance;   
    }   
}   
  
// 测试类   
class singletonTest {   
    public static void main(String[] args) {   
        Singleton s1 = Singleton.getInstance();   
        Singleton s2 = Singleton.getInstance();   
        if (s1 == s2)   
            System.out.println("s1 is the same instance with s2");   
        else  
            System.out.println("s1 is not the same instance with s2");   
    }   
}  

package com.xyq.demo;

public class Singleton {
	private static final Singleton instance = new Singleton();
	private Singleton() {
	}
	public static Singleton getInstance() {
		return instance;
	}
}

// 测试类
class singletonTest {
	public static void main(String[] args) {
		Singleton s1 = Singleton.getInstance();
		Singleton s2 = Singleton.getInstance();
		if (s1 == s2)
			System.out.println("s1 is the same instance with s2");
		else
			System.out.println("s1 is not the same instance with s2");
	}
}
 输出:  s1 is the same instance with s2

 

懒汉式单例类

Java代码  
package com.xyq.demo;   
  
public class Singleton {   
    private static Singleton instance = null;   
  
    /**  
     * 私有的默认构造子,保证外界无法直接实例化  
     */  
    private Singleton() {   
    }   
  
    /**  
     * 静态工厂方法,返还此类的惟一实例  
     */  
    synchronized public static Singleton getInstance() {   
        if (instance == null) {   
            instance = new Singleton();   
        }   
        return instance;   
    }   
}   
  
// 测试类   
class singletonTest {   
    public static void main(String[] args) {   
        Singleton s1 = Singleton.getInstance();   
        Singleton s2 = Singleton.getInstance();   
        if (s1 == s2)   
            System.out.println("s1 is the same instance with s2");   
        else  
            System.out.println("s1 is not the same instance with s2");   
    }   
}  

package com.xyq.demo;

public class Singleton {
	private static Singleton instance = null;

	/**
	 * 私有的默认构造子,保证外界无法直接实例化
	 */
	private Singleton() {
	}

	/**
	 * 静态工厂方法,返还此类的惟一实例
	 */
	synchronized public static Singleton getInstance() {
		if (instance == null) {
			instance = new Singleton();
		}
		return instance;
	}
}

// 测试类
class singletonTest {
	public static void main(String[] args) {
		Singleton s1 = Singleton.getInstance();
		Singleton s2 = Singleton.getInstance();
		if (s1 == s2)
			System.out.println("s1 is the same instance with s2");
		else
			System.out.println("s1 is not the same instance with s2");
	}
}
 输出:  s1 is the same instance with s2

我写的这些仅适用于公司面试,如果要想好好学习设计模式,得全面的看看这方面的资料

java面试——快速排序 数据结构 java面试——快速排序
java面试——快速排序
关键字: 数据结构 
基本思想

快速排序对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

算法过程  

设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一躺快速排序。一躺快速排序的算法是: 


1)设置两个变量I、J,排序开始的时候:I=1,J=N;


2)以第一个数组元素作为关键数据,赋值给X,即 X=A[0]; 


3)从J开始向前搜索,即由后开始向前搜索(J=J-1),找到第一个小于X的值,让该值与X交换; 


4)从I开始向后搜索,即由前开始向后搜索(I=I+1),找到第一个大于X的值,让该值与X交换; 


5)重复第3、4步,直到 I=J; 

 

例如:待排序的数组A的值分别是:(初始关键数据:X=3) 


A[0] 、 A[1]、 A[2]、 A[3]、 A[4]


3            1         5         4          2       

根据(3)从右往左找,找到第一个小于X的值为2(2<3) 进行与X的交换,

进行第一次交换后: 2 1 5 4 3 ,此时J=3

根据(4)从左往右找,找到第一个大于X的值为5(5>3) 进行与X的交换,

进行第二次交换后:2 1 3 4 5 , 此时I=2

再执行第三步的时候就发现I=J,从而结束一躺快速排序,那么经过一趟快速排序之后的结果是:

2 1 3 4 5,即所以大于3的数全部在3的右边,所以小于3的数全部在3的左边。 


快速排序就是递归调用此过程——在以3为中点分割这个数据序列,分别对前面一部分和后面一部分进行类似的快速排序,从而完成全部数据序列的快速排序,最后把此数据序列变成一个有序的序列。 


初始状态 {3 1 5 4 2} 


进行一次快速排序之后划分为 {2 1} 3{4 5} 


分别对前后两部分进行快速排序 {2 1} 经第三步和第四步交换后变成 {1 2} 完成排序。


{4 5} 经第三步和第四步交换后变成 {4 5} 完成排序。

JAVA算法 

Java代码  
 /**   
 * 工程:sort  
 * 包名:com.xyq.demo  
 * 文件:QuitSort .java  
 * 作者:xiatiaohcx   
 * 时间:Apr 1, 2009  10:31:30 AM   
 */  
package com.xyq.demo;   
  
/**  
 * @author xiatiaohcx  
 *   
 * 作用:快速排序  
 */  
public class QuitSort {   
    public static void main(String[] args) {   
        int[] nums = { 3,1,5,4,2 };   
        quickSort(nums, 0, nums.length - 1);   
        for (int i = 0; i < nums.length; ++i) {   
            System.out.print(nums[i] + ",");   
        }   
        System.out.println("");   
    }   
  
    public static void quickSort(int[] a, int low, int hight) {   
        int left = low;   
        int right = hight;   
  
        if (left >= right)   
            return;   
  
        boolean flag = true;   
  
        while (left != right) {   
            if (a[left] > a[right]) {   
                int temp = a[left];   
                a[left] = a[right];   
                a[right] = temp;   
                flag = (flag == true) ? false : true;   
            }   
  
            if (flag)   
                right--;   
            else  
                left++;   
  
        }   
  
        left--;   
        right++;   
        quickSort(a, low, left);   
        quickSort(a, right, hight);   
    }   
}  

 /** 
 * 工程:sort
 * 包名:com.xyq.demo
 * 文件:QuitSort .java
 * 作者:xiatiaohcx 
 * 时间:Apr 1, 2009  10:31:30 AM 
 */
package com.xyq.demo;

/**
 * @author xiatiaohcx
 * 
 * 作用:快速排序
 */
public class QuitSort {
	public static void main(String[] args) {
		int[] nums = { 3,1,5,4,2 };
		quickSort(nums, 0, nums.length - 1);
		for (int i = 0; i < nums.length; ++i) {
			System.out.print(nums[i] + ",");
		}
		System.out.println("");
	}

	public static void quickSort(int[] a, int low, int hight) {
		int left = low;
		int right = hight;

		if (left >= right)
			return;

		boolean flag = true;

		while (left != right) {
			if (a[left] > a[right]) {
				int temp = a[left];
				a[left] = a[right];
				a[right] = temp;
				flag = (flag == true) ? false : true;
			}

			if (flag)
				right--;
			else
				left++;

		}

		left--;
		right++;
		quickSort(a, low, left);
		quickSort(a, right, hight);
	}
}  呵呵,这篇文章是我的第一个开篇,写的有点垃圾,大部分都是从baidu上搜出来的,不过是自己整理的,javaeye让标 明是否原创,郁闷,支持自己一个,写个原吧

java面试——逆序打印 逆序打印 java面试——逆序打印
java面试——逆序打印
关键字: 逆序打印 
公司程序员面试经常碰到的题

1.String的subString()方法

Java代码  
package com.xyq.demo;   
  
public class Reverse {   
    public static void main(String[] args) {   
        String s = "残花百力无风东,难亦别难时见相";   
        int len = s.length();   
        String reverse = "";   
        for (int i = len; i > 0; i--)   
            reverse += s.substring(i - 1, i);   
        System.out.print(reverse);   
    }   
}  

package com.xyq.demo;

public class Reverse {
	public static void main(String[] args) {
		String s = "残花百力无风东,难亦别难时见相";
		int len = s.length();
		String reverse = "";
		for (int i = len; i > 0; i--)
			reverse += s.substring(i - 1, i);
		System.out.print(reverse);
	}
} 输出:相见时难别亦难,东风无力百花残

 

2.StringBuffer的reverse()方法

Java代码  
package com.xyq.demo;   
  
import java.util.Scanner;   
  
public class Reverse {   
    public static void main(String[] args) {   
        String str;   
        System.out.println("请输入:");   
        Scanner scan=new Scanner(System.in);   
        str=scan.nextLine();   
        str=(new StringBuffer(str).reverse()).toString();   
        System.out.println(str);   
    }   
}  

package com.xyq.demo;

import java.util.Scanner;

public class Reverse {
	public static void main(String[] args) {
		String str;
		System.out.println("请输入:");
		Scanner scan=new Scanner(System.in);
		str=scan.nextLine();
		str=(new StringBuffer(str).reverse()).toString();
		System.out.println(str);
	}
} 请输入:

123

321

 

3.禁止使用String,StringBuffer,Integer  (整数逆序打印)

Java代码  
package com.xyq.demo;   
  
  
public class Reverse {   
    public static void main(String[] args) {   
        output(103658);   
    }   
  
    public static void output(int num) {   
        int temp = 0;   
        while (num > 9) {   
            temp = num % 10;   
            System.out.print(temp);   
            num = (int) (num / 10);   
        }   
        System.out.print(num);   
    }   
}  

package com.xyq.demo;


public class Reverse {
	public static void main(String[] args) {
		output(103658);
	}

	public static void output(int num) {
		int temp = 0;
		while (num > 9) {
			temp = num % 10;
			System.out.print(temp);
			num = (int) (num / 10);
		}
		System.out.print(num);
	}
} 输出:856301

 

4.栈

Java代码  
package com.xyq.demo;   
  
import java.util.Stack;   
  
public class Reverse {   
    public static void main(String[] args) {   
        reverseStr("103658");   
    }   
    @SuppressWarnings("unchecked")   
    public static void reverseStr(String s) {   
        Stack myStack = new Stack();   
        for (int i = 0; i <= s.length() - 1; i++) {   
            myStack.push(String.valueOf(s.charAt(i)));   
        }   
        while (!myStack.empty()) {   
            System.out.print((String) myStack.pop());   
        }   
    }   
}  

package com.xyq.demo;

import java.util.Stack;

public class Reverse {
	public static void main(String[] args) {
		reverseStr("103658");
	}
	@SuppressWarnings("unchecked")
	public static void reverseStr(String s) {
		Stack myStack = new Stack();
		for (int i = 0; i <= s.length() - 1; i++) {
			myStack.push(String.valueOf(s.charAt(i)));
		}
		while (!myStack.empty()) {
			System.out.print((String) myStack.pop());
		}
	}
} 输出:856301

 

5.数组

Java代码  
package com.xyq.demo;   
  
public class Reverse {   
    public static void main(String[] args) {   
        System.out.println(f("103658"));   
    }   
  
    public static String f(String s) {   
        char[] c = s.toCharArray();   
        char[] temp = new char[c.length];   
        for (int i = 0, j = c.length - 1; i < c.length; i++, j--) {   
            temp[j] = c[i];   
        }   
        return new String(temp, 0, temp.length);   
    }   
}  
各种数组排序方法总结 数据结构,java算法 各种数组排序方法总结
前一段时间面试,经常遇到有关排序的面试题,闲了无事,将各种排序方法用java写了一下。

代码如下:

Java代码  
import java.lang.Math;   
import java.util.Random;   
  
/**  
 * 排序  
 *   
 * @author javajack    
 */  
public class OrderTest {   
  
    public static void main(String args[]) {   
        OrderTest.ExecOrder(2);   
    }   
  
    /**  
     * 交换值,交换数组的两个值  
     * @param array  
     * @param i  
     * @param j  
     */  
    private static void swap(int[] array,int i, int j)   
    {   
        int tmp = array[i];   
        array[i] = array[j];   
        array[j] = tmp;   
    }      
       
    /**  
     *   
     * @param method  
     *            1为升序,2为降序  
     */  
    public static void ExecOrder(int method) {   
        int[] array = null;   
        array = initArray(10, 210, 10);   
           
         //int[] orderarray = bubbleOrder(array,method);   
        int[] orderarray = doubleBubbleOrder(array,method);   
        //int[] orderarray = insertOrder(array, method);   
        //int [] orderarray = quickOrder(array,method);   
        //int[] orderarray = selectOrder(array, method);   
        for (int i = 0; i < orderarray.length; i++) {   
            System.out.println(orderarray[i]);   
        }   
    }   
  
    /**  
     * 取随机数据,初始化一个数组  
     *   
     * @param min  
     *            随机数的最小值  
     * @param max  
     *            最大值  
     * @param size  
     *            取得随机数的数量  
     * @return  
     */  
    public static int[] initArray(int min, int max, int size) {   
        int[] init = new int[size];   
  
        for (int i = 0; i < size; i++) {   
            Random ra = new Random();   
            init[i] = min + (int) (Math.random() * (max - min + 1));   
            System.out.println(i + "-------" + init[i]);   
        }   
        return init;   
    }   
  
    /**  
     * 交换排序方法  
     * 原理:依次交换值  
     * @param array  
     * @return  
     */  
    public static int[] convertOrder(int[] array, int method) {   
        for (int i = 0; i < array.length; i++) {   
            for (int j = i + 1; j < array.length; j++)    
            {   
                if (method==2)   
                {   
                    if (array[i] < array[j])    
                        swap(array,i,j);   
                }else if (method == 1) {   
                    if (array[i] > array[j])    
                        swap(array,i,j);   
                }   
            }   
        }   
        return array;   
    }   
  
    /**冒泡排序方法  
     * 原理:从最后一个开始将小的或大的逐渐冒出  
     * @param array  
     * @param method  
     * @return  
     */  
    public static int[] bubbleOrder(int[] array,int method)   
    {   
        for(int i=0;i<array.length;i++)   
        {   
            for (int j=array.length -1 ;j>i;j--)   
            {   
                if (method==2)   
                {   
                    if (array[i] < array[j])   
                        swap(array,i,j);   
                }else if (method==1)   
                    if (array[i] > array[j])   
                        swap(array,i,j);   
            }   
        }   
        return array;   
    }   
       
    /**  
     * 双向冒泡排序  
     * 原理:类似于冒泡排序,只不过是双向的  
     * @param array  
     * @param method  
     * @return  
     */  
    public static int[] doubleBubbleOrder(int[] array,int method)   
    {   
        int left = 0;   
        int right = array.length -1 ;   
        while (left < right)   
        {   
            for(int i=left;i<=right;i++)   
            {   
                if (method==1)   
                {   
                    if (array[left] > array[i])   
                        swap(array,left,i);   
                }else  
                {   
                    if (array[left] < array[i])   
                        swap(array,left,i);   
                }   
            }   
               
            for (int i=left+1;i<=right;i++)   
            {   
                if (method==1)   
                {   
                    if (array[right] < array[i])   
                        swap(array,right,i);   
                }else  
                {   
                    if (array[right] > array[i])   
                        swap(array,right,i);   
                       
                }   
            }   
            left++;   
            right--;   
        }   
        return array;   
    }   
       
    /**  
     * 快速排序方法,运用到递归  
     * 排序原理:随机找到一个值,然后以此值大小进行分为两个数组,大的放左边,小的放右边,  
     * 然后再对左右两侧的数据依次排序根据  
     * @param array  
     * @param method  
     * @return  
     */  
    public static int[] quickOrder(int[] array, int method)    
    {   
        quickDeal(array,0,array.length - 1,method);   
        return array;   
    }   
  
    /**  
     *   
     * @param array  
     * @param begin  
     *            开始位置  
     * @param end  
     *            结束位置  
     */  
    private static void quickDeal(int[] array, int begin, int end,int method) {   
        if (end > begin) {   
            int pos = begin + (int) (Math.random() * (end - begin + 1)); // 计算分隔位置   
            int posvalue = array[pos]; // 取得分隔位置的值   
            swap(array,pos,end); //将posvalue放到最end的位置   
            pos=begin; //初始化pos   
            for (int i=begin; i < end; i++) {   
                if (method==1)   
                {      
                    if (array[i] < posvalue) { //当小于posvalue时,将此值移动到pos位置,也就是向前移动   
                        swap(array,pos,i);    
                        pos++; //移动后pos增1   
                    }   
                }else if(method == 2)   
                {   
                    if (array[i] > posvalue) { //当小于posvalue时,将此值移动到pos位置,也就是向前移动   
                        swap(array,pos,i);    
                        pos++; //移动后pos增1   
                    }   
                }   
            }   
            swap(array,pos,end); //end位置的值前移   
            quickDeal(array,begin,pos -1,method);   
            quickDeal(array,pos+1,end,method);   
        }   
  
    }   
  
    /**  
     * 插入排序方法  
     * 排序原理:抽出一个数,做为排序基序列,然后依次抽出其它数与,与此序列中的数进行比较,放入合适的位置  
     * @param array  
     * @param method  
     * @return  
     */  
    public static int[] insertOrder(int[] array, int method) {   
  
        for (int i = 1; i < array.length; i++) {   
            if (method == 1) {   
                if (array[i - 1] > array[i]) {   
                    int tmp = array[i]; //   
                    int j = i - 1;   
                    do {   
                        array[j + 1] = array[j];   
                        j--;   
                    } while (j >= 0 && tmp < array[j]); //当j>=0并且 当前值大于数据中j位置的值时移动   
                    array[j + 1] = tmp; //插入排序值   
                }   
            } else if (method == 2) {   
                if (array[i - 1] < array[i]) {   
                    int tmp = array[i];    
                    int j = i - 1;   
                    do {   
                        array[j + 1] = array[j];   
                        j--;   
                    } while (j >= 0 && tmp > array[j]);   
                    array[j + 1] = tmp;   
                }   
            }   
        }   
        return array;   
    }   
  
    /**  
     * 选择排序方法  
     * 排序原理:每次选择一个最大的或最小的数放到已排序序列中  
     * @param array  
     * @param method  
     * @return  
     */  
    public static int[] selectOrder(int[] array,int method)   
    {   
        for (int i=0;i<array.length - 1;i++)    
        {   
            int tmp = array[i];   
            int pos = i+1; //记录大值或小值的位置    
            for (int j=i+1;j<array.length;j++)   
            {   
                if (method==1)   
                {   
                    if (array[j]<tmp)   
                    {   
                        tmp = array[j];   
                        pos= j ;//记录大值或小值的位置   
                    }   
                }else if (method==2)   
                {   
                    if (array[j]>tmp)   
                    {   
                        tmp = array[j];   
                        pos= j ;//记录大值或小值的位置   
                    }   
                }   
            }   
            if (tmp != array[i])   
                swap(array,i,pos); //不相同时交换   
        }   
        return array;   
    }   
  
       
}  
java冒泡排序 数据结构,java算法
基本概念
冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i, j的值依次为1,2,...10-i。

第一种
public class BubbleSort {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[] sort = {5,9,4,3,8,6};
		bubbleSort(sort);
	}
	
	public static void bubbleSort(int[] sort) 
	{
		int temp;
		for(int i = 0; i<sort.length-1;i++) 
		{
			for (int j = 0; j < sort.length-i-1; j++) {
				if(sort[j]>sort[j+1]) 
				{
					temp = sort[j];
					sort[j] = sort[j+1];
					sort[j+1] = temp;
				}
			}
		}
		
		for (int i = 0; i < sort.length; i++) {
			System.err.print(sort[i] + " ");
		}
	}
	
	
}

第二种
  
public class BubbleSort {   
    public static void sort(int[] data) {   
        int temp;   
        for (int i = 0; i < data.length; i++) {   
            for (int j = data.length - 1; j > i; j--) {   
                if (data[i] > data[j]) {   
                    temp = data[i];   
                    data[i] = data[j];   
                    data[j] = temp;   
                }   
            }   
        }   
    }   
  
    public static void main(String[] args) {   
        int[] a = { 4, 2, 3, 1, 5 };   
        sort(a);   
        for (int i = 0; i < a.length; i++)   
            System.out.print(a[i] + " ");   
    }   
}  
Global site tag (gtag.js) - Google Analytics