选择排序法
一.选择法排序的思路:
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] + " ");
}
}
}