Java程序语言 冒泡排序、选择排序、插入排序

public class SortMethod {
	public static void main(String[] args){
		
		int len = 8;
		int[] arr = new int[len];
		for(int i = 0; i <len; i++ ){
			// 让程序随机产生1~100个数
			// Math.random()产生一个0~1
			int t = (int)(Math.random() * 100);
			arr[i] = t;
		}
		
		// 创建一个Bubble类对象
		Bubble bubble = new Bubble();
		// 获得一个实例
		Calendar cal = Calendar.getInstance();
		System.out.println("排序前" + cal.getTime());
		bubble.bubbleSort(arr);
		// 输出最后结果
		for(int i = 0; i < arr.length; i++){
			System.out.print(arr[i] + " ");
		}
		cal = Calendar.getInstance();
		System.out.println("排序后" + cal.getTime());
		System.out.println();
		
		// 创建一个Select类对象
		Select select = new Select();
		// 获得一个实例
		cal = Calendar.getInstance();
		System.out.println("排序前" + cal.getTime());
		select.selectSort(arr);
		// 输出最后结果
		for(int i = 0; i < arr.length; i++){
			System.out.print(arr[i] + " ");
		}
		//重新获得实例
		cal = Calendar.getInstance();
		System.out.println("排序后" + cal.getTime());
		
		Insert insert = new Insert();
		insert.insertSort(arr);
		// 输出最后结果
		for(int i = 0; i < arr.length; i++){
			System.out.print(arr[i] + " ");
		}
	}
}

class Bubble{
	// 排序方法:冒泡排序
	public void bubbleSort(int arr[]){
		int temp = 0;
		// 排序
		// 外层循环,它决定一共走几趟
		for(int i = 0; i < arr.length - 1; i++){
			// 内存循环,开始逐个比较,如果发现前一个数
			// 后一个数大,则交换位置
			for(int j = 0; j < arr.length - 1 - i; j++){
				if(arr[j] > arr[j + 1]){
					temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
	}
}

class Select{
	// 选择排序
	public void selectSort(int arr[]){
		
		int temp = 0;
		for(int i = 0; i < arr.length - 1; i++){
			// 设第一个数是最小的
			int min = arr[i];
			// 记录最小的数的下标
			int minIndex = i;
			for(int j = i + 1; j < arr.length; j++){
				if(min > arr[j]){
					// 修改最小值
					min = arr[j]; 
					minIndex = j;
				}
			}
			
			// 内部for循环结束后就找到这次的最小值
			temp = arr[i];
			arr[i] = arr[minIndex];
			arr[minIndex] = temp;
		}
	}
}

class Insert{
	// 插入排序方法
	public void insertSort(int arr[]){
		for(int i = 1; i < arr.length; i++){
			int insertVal = arr[i];
			int index = i - 1;
			// insertVal将准备前一个数比较
			while(index <= 0 && insertVal < arr[index]){
				// 将arr[index]向后移动
				arr[index + 1] = arr[index];
				// 下标减1
				index--;
			}
			
			// 将insertVal插入适当位置
			arr[index + 1] = insertVal;
		}
	}
}

posted on 2012-08-28 19:59  1.曲待续  阅读(139)  评论(0编辑  收藏  举报

导航