java中的三种排序算法详解(直接选择.冒泡.插入)

public class Sort {
	public static void main(String args[]){
	int[] a = {2,15,9,7,36};//建立一个无序数组
	System.out.println("选择排序:");
	selectSort(a);
	System.out.println();
	System.out.println("冒泡排序:");
	bubbleSort(a);
	System.out.println();
	System.out.println("插入排序:");
	insertSort(a);
	}
	
	//直接选择排序算法
	/*算法思想:,它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,
	 * 第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....,
	 * 第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,.....,
	 * 第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,
	 * 得到一个按排序码从小到大排列的有序序列·
	 */
	public static void selectSort(int[] arr){//对数组进行选择排序
		int min,temp;
		for (int i = 0; i < arr.length-1; i++) {
			min = i;//在未排序数据中找出最小的一个
			for (int j = i+1; j < arr.length; j++) {
				if(arr[min]>arr[j])
					min = j;//记录最小元素的下标
			}
				if(min != i){//交换
					temp = arr[min];
					arr[min] = arr[i];
					arr[i] = temp;
				}
				System.out.print("选择排序第"+(i+1)+"趟排序:");
				for(int k=0;k=0 && arr[j]arr[i]时,左边的数大于右边时移动
				arr[j+1]=arr[j];    //将arr[j]向后移动一个位置
				j--;   //将j的位置向前移动再进入while循环比较,如果满足条件则继续执行arr[j+1]=arr[j];
			}//跳出循环
			arr[j+1]=key;//把要插入的数放到空出的位置
		}*/
		//第二种写法  
		for(int i=1;i0;j-- ){ 
				//判断
				if(arr[j]

你可能感兴趣的:(JAVA)