特点:内循环结束一次,最值出现在头角标上。
int[] a={2,3,1,4}
角标:0 1 2 3
元素:2 3 1 4
角标为0的和角标为1、2、3的分别比较,
角标为0的数(2)<角标为1的数(3)--》不换位置
角标为0的数(2)>角标为2的数(1)--》角标为0的数(1),角标为2的数(2)
角标为0的数(1)<角标被3的数(4)--》不换位置
第一轮结果:1 3 2 4
角标为0的数(1)不参与第二轮比较
角标为1的数(3)>角标为2的数(2)--》角标为1的数(2),角标为2的数(3)
依次类推:
第二轮结果:1,2 3 4
int[] a={2,3,1,4}
角标:0 1 2 3
元素:2 3 1 4
角标为0的和角标为1、2、3的分别比较,
角标为0的数(2)<角标为1的数(3)--》不换位置
角标为0的数(2)>角标为2的数(1)--》角标为0的数(1),角标为2的数(2)
角标为0的数(1)<角标被3的数(4)--》不换位置
第一轮结果:1 3 2 4
角标为0的数(1)不参与第二轮比较
角标为1的数(3)>角标为2的数(2)--》角标为1的数(2),角标为2的数(3)
依次类推:
第二轮结果:1,2 3 4
第三轮结果:1 2,3 4
/*
需求1:对给定数组进行排序:从小到大排序
{5,1,6,4,2,8,9}
*/
class ArrayTest_xuanzhepaixu //类名接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
{
public static void main(String[] args)
{
int[] arr={3,1,6,8};
//排序前打印,都需要遍历
printArray(arr);//调用printArray(int[] arr)函数
//排序
xzpx(arr);//调用xzpx(int[] arr)函数
//排序后打印,都需要遍历
printArray(arr);
}
//定义一个功能,选择排序
public static void xzpx(int[] arr)//定义一个功能,选择排序,图形数组void,selectSort//变量名和函数名:xxxYyyZzz
{
//int temp=0;//定义一个临时存放角标的变量,初始化值为0;
for (int x=0;x<arr.length-1 ;x++ )//最后一个数不需要遍历-1
{
for (int y=x+1;y<arr.length ;y++ )//与后面的数比较
{
if (arr[x]>arr[y])//从大到小,只要改<
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
//定义一个功能,打印数组
public static void printArray(int[] arr)
{
System.out.print("[");
for (int x=0;x<arr.length ;x++ )
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
}