选择排序有两种,我就说一种,首先先定一个数组,接着for循环,然后再对比,接着定义一个数,实现转换,小的往前走大的后移,再遍历,最后输出
列
class Wuqu
{
public static void main(String[] args)
{
int a[]={-5,1,3,6,1,0,9,-2};
for(int i=0;i<7;i++)
{
for(int j=1+i;j<8;j++)
{
if(a[i]<a[j])
{
int t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
for(int i=0;i<8;i++)
{
System.out.println(a[i]);
}
}
}
还有一种不理解,就是陈梦芳同学那种
列
/*
中心思想:在未排序的序列中选择出最小值的下标,并用最小值下标的元素与未排序序列的首元素进行交换
55 45 86 17 23
17
23
45
55
86
arr
55 45 86 17 23
0 1 2 3 4
55 45 86 17 23 0 ----55 45 86 17 23
0 1 2 3 4 minIndex = 0 arr[minIndex]与arr[1] 比较 minIndex = 1
minIndex = 1 arr[minIndex]与arr[2] 比较 minIndex = 1
minIndex = 1 arr[minIndex]与arr[3] 比较 minIndex = 3
minIndex = 3 arr[minIndex]与arr[4] 比较 minIndex = 3 arr[minIndex]与arr[0] 交换
17 45 86 55 23 1 ----45 86 55 23
0 1 2 3 4 minIndex = 1 arr[minIndex]与arr[2] 比较 minIndex = 1
minIndex = 1 arr[minIndex]与arr[3] 比较 minIndex = 1
minIndex = 1 arr[minIndex]与arr[4] 比较 minIndex = 4 arr[minIndex]与arr[1] 交换
17 23 86 55 45 2 ----86 55 45
0 1 2 3 4 minIndex = 2 arr[minIndex]与arr[3] 比较 minIndex = 3
minIndex = 3 arr[minIndex]与arr[4] 比较 minIndex = 4 arr[minIndex]与arr[2] 交换
17 23 45 55 86 3 ----55 86
0 1 2 3 4 minIndex = 3 arr[minIndex]与arr[4] 比较 minIndex = 3 arr[minIndex]与arr[3] 交换
17 23 45 55 86
*/
public class Demo{
public static void main(String[] args)
{
int[] arr = {55 ,45, 86, 17, 23};
for(int i = 0;i < arr.length - 1;i++)
{
int minIndex = i;
for(int j = i +1; j < arr.length;j++)
{
if(arr[minIndex] > arr[j])
{
minIndex = j;
}
}
if(minIndex != i)
{
int temp;
temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
for(int i = 0;i< arr.length;i++)
{
System.out.println(arr[i]);
}
}
}