public class ArrayPaixu {
/**
* 选择排序法
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义数组
int[] arr={2,6,8,7,9,5};
System.out.println("原始数组序列为:");
print1(arr);//调用输出函数
System.out.println();//输出回车
for(int i=0,k=1;i<arr.length-1;i++,k++)//双重循环,其中k和l为输出的序号,所以从1开始。
{
for(int j=i+1,l=1;j<arr.length;j++,l++)
{
if(arr[i]>arr[j])
{
int t=arr[i];
arr[i]=arr[j];
arr[j]=t;//判断大小后交换位置
prints(arr,l);//输出每次交换一位后的数组
}
else
prints(arr,l);//输出每次对比以后没有交换的数组
}
if(i<arr.length-2)//判断是否比较完了
print2(arr,k);//没有就输出对比一轮后的数组
else
prints(arr);//对比完成后输出最终数组
}
}
static void prints(int[] arr,int j)//输出对比次数函数
{
System.out.print("第"+j+"次");
print1(arr);
System.out.println();
}
static void print2(int[] arr,int i)//输出对比一轮后数组函数
{
System.out.print("第"+i+"轮");
print1(arr);
System.out.println();
}
static void prints(int[] arr)//输出最终数组
{
System.out.println("最终排序后序列:");
print1(arr);
}
static void print1(int[] arr)//定义输出函数
{
for(int var:arr)
{
System.out.print(var+" ");
}
}
}
结果:
原始数组序列为:
2 6 8 7 9 5
第1次2 6 8 7 9 5
第2次2 6 8 7 9 5
第3次2 6 8 7 9 5
第4次2 6 8 7 9 5
第5次2 6 8 7 9 5
第1轮2 6 8 7 9 5
第1次2 6 8 7 9 5
第2次2 6 8 7 9 5
第3次2 6 8 7 9 5
第4次2 5 8 7 9 6
第2轮2 5 8 7 9 6
第1次2 5 7 8 9 6
第2次2 5 7 8 9 6
第3次2 5 6 8 9 7
第3轮2 5 6 8 9 7
第1次2 5 6 8 9 7
第2次2 5 6 7 9 8
第4轮2 5 6 7 9 8
第1次2 5 6 7 8 9
最终排序后序列:
2 5 6 7 8 9
每一次对比也都写出来了 |