Java练习_选择排序法

选择排序法

一.选择法排序的思路:
1.把第一位和其他所有的进行比较,只要比第一位小的,就换到第一个位置来比较完后,第一位就是最小的。
2.然后再从第二位和剩余的其他所有进行比较,只要比第二位小,就换到第二个位置来比较完后,第二位就是第二小的。以此类推。

二.拆解代码

public class 选择排序法 {
    
    

	public static void main(String[] args) {
    
    
		
		int [] a = new int[] {
    
    18,62,68,82,65,9};//创建一个数组。
		
		for(int i = 0;i<a.length;i++)//顺序打印。
		{
    
    
			System.out.print(a[i] + " ");
		}
		
		for(int  i = 1;i<a.length;i++)//比较第一位。设置i为1,意味着a[1]是第一个被比较的对象,被他之前的a[0]比较。
		{
    
    
			if(a[i]<a[0])
			{
    
    
				int temp = a[0];
				a[0] = a[i];
				a[i] = temp;
			}
		}
		
		System.out.println();//打印第一趟结果。
		System.out.print("第一趟排序后:");
		for(int i=0;i<a.length;i++)
		{
    
    
			System.out.print(a[i] + " ");
		}
		
		for(int i=2;i<a.length;i++)
		{
    
    
			if(a[1]>a[i])
			{
    
    
				int temp = a[1];
				a[1] = a[i];
				a[i] = temp;
			}
		}
		
		System.out.println();
		System.out.print("第二趟排序后:");
		for(int i = 0;i<a.length;i++)
		{
    
    
			System.out.print(a[i] + " ");
		}
		
		for(int i = 3;i<a.length;i++)
		{
    
    
			if(a[2]>a[i])
			{
    
    
				int temp = a[2];
				a[2] = a[i];
				a[i] = temp;
			}
		}
		
		System.out.println();
		System.out.print("第三趟排序后:");
		for(int i=0;i<a.length;i++)
		{
    
    
			System.out.print(a[i] + " ");
		}
		
		for(int i = 4;i<a.length;i++)
		{
    
    
			if(a[3]>a[i])
			{
    
    
				int temp = a[3];
				a[3] = a[i];
				a[i] = temp;
			}
		}
		
		System.out.println();
		System.out.print("第四趟排序后:");
		for(int i =0;i<a.length;i++)
		{
    
    
			System.out.print(a[i] + " ");
		}
		
		for(int i = 5;i<a.length;i++)
		{
    
    
			if(a[4] > a[i])
			{
    
    
				int temp = a[4];
				a[4] = a[i];
				a[i] = temp;
			}
		}
		
		System.out.println();
		System.out.print("第五趟排序后:");
		for(int i = 0;i<a.length;i++)
		{
    
    
			System.out.print(a[i] + " ");
		}

	}

}

三.精简代码

public class 选择排序法_标准 {
    
    

	public static void main(String[] args) {
    
    

		int[] a = new int[] {
    
     18, 62, 68, 82, 65, 9 };// 创建一个数组。

		System.out.print("排序前:");
		for (int i = 0; i < a.length; i++)// 顺序打印。
		{
    
    
			System.out.print(a[i] + " ");
		}
		
		for(int i=0;i<a.length-1;i++)//i的范围从0到5。
		{
    
    
			for(int j=i+1;j<a.length;j++)//难点,j的范围从0到(5-i),结合i看,j的范围也在0到5之间。
				                                                    //内外循环和冒泡排序拥有相同之处。
			{
    
    
				if(a[i]>a[j])
				{
    
    
					int temp = a[i];
					a[i] = a[j];
					a[j] = temp;
				}
			}
		}
		System.out.println();
		System.out.print("排序后:");
		for(int i=0;i<a.length;i++)
		{
    
    
			System.out.print(a[i] + " ");
		}
		
	}

}

猜你喜欢

转载自blog.csdn.net/weixin_41858806/article/details/112585114