Java数据结构和算法--排序

(1)冒泡排序

package ChapterOne;

public class Bubble {

	public static void main(String[] args) {
		Bubble b = new Bubble();
		for(int i = 0;i < arr.length;i++){
			System.out.print(arr[i]+" ");
		}
		System.out.println();
		b.bubble();
		for(int i = 0;i < arr.length;i++){
			System.out.print(arr[i]+" ");
		}
                  System.exit(0);
	}
	/**
	 * 冒泡排序
	 */
	public void bubble(){
		for(int i = arr.length-1;i > 1;i--){
			for(int j = 0;j < i;j++){
				if(arr[j] > arr[j+1])
					swap(j,j+1);
			}
		}
	}
	/**
	 * 交换数组中的两个数
	 * @param one
	 * @param two
	 */
	public void swap(int one,int two){
		long temp = arr[one];
		arr[one] = arr[two];
		arr[two] = temp;
	}
	
	static long arr[] = new long[20];
	/**
	 * 随机初始化一个长度为20的数组
	 */
	static{
		for(int i = 0;i < arr.length;i++){
			arr[i] = (long) (Math.random()*100);
		}
	}
}


(2)选择排序
package ChapterOne;

public class SelectSort {
	/**
	 * 初始化一个长度为size的数组
	 * @param size
	 */
	public SelectSort(int size){
		arr = new long[size];
		for(int i = 0;i < size;i++){
			arr[i] = (long) (Math.random()*100);
		}
	}
	/**
	 * 选择排序
	 * @return
	 */
	public long[] sort(){
		for(int i = 0;i < arr.length;i++){
			int minIndex = findMin(i);
			long min = arr[minIndex];
			//子数组中的所有的数后移一个位置
			for(int j = minIndex;j > 0;j--)
				arr[j] = arr[j-1];
			//把最小的数插入到最前端
			arr[0] = min;
		}
		return arr;
	}
	/**
	 * 查找一start为起始位置到数组最后位置这段子数组中最小的一个数的位置
	 * @param start
	 * @return
	 */
	public int findMin(int start){
		int min = start;
		for(int i = min;i < arr.length;i++)
			if(arr[min] > arr[i])
				min = i;
		return min;
	}
	
	public static void main(String[] args) {
		SelectSort ss = new SelectSort(10);
		ss.print();
		long oa[] = ss.sort();
		for(int i = 0;i < oa.length;i++)
			System.out.print(oa[i]+" ");
		System.out.println();
		System.exit(0);
	}
	public void print(){
		for(int i = 0;i < arr.length;i++){
			System.out.print(arr[i]+" ");
		}
		System.out.println();
	}
	
	long arr[];
}


你可能感兴趣的:(java,数据结构,算法,J#)