选择排序:
(1)第一个数分别跟第二个、第三个……最后一个依次比较,每次把较小的数放到第一个位置,循环比较一次后第一个数为最小数。
(2)再用第二个数分别跟第三个、第四个……最后一个依次比较,每次把较小的数放到第二个位置,循环比较一次后,第二个数为第二小的值。
(3)依次排序,直到最后一个数。
例如有一个数组:{3,1,2,8,5,10,4,12}
int[] a=new int[]{3,1,2,8,5,10,4,12};
第一轮内循环:
a[[0] 依次跟 a[1]、a[2]、a[3]……a[7] 比较,每次把较小值放到 a[0]。
第一轮内循环后,第一个数为最小值 1,即 a[0] = 1 。
第二轮内循环:
a[[1] 依次跟 a[2]、a[3]、a[4]……a[7] 比较,每次把较小值放到 a[1]。
第二轮内循环后,第二个数为第二小的值,即 a[1] = 2 。
第三轮内循环:
a[[2] 依次跟 a[3]、a[4]、a[5]……a[7] 比较,每次把较小值放到 a[2]。
第三轮内循环后,第三个数为第三小的值,即 a[2] = 3 。
最终结果:
代码分析:
写一个完成选择排序功能的函数 selectsort()
public static void selectsort(int[] a) {
for(int x=0;x<a.length-1;x++) {
for(int y=x+1;y<a.length;y++) {
if(a[x]>a[y]) {
int temp;
temp=a[y];
a[y]=a[x];
a[x]=temp;
}
}
}
}
打印数组函数 print()
public static void print(int[] a) {
System.out.print("[");
for(int x=0;x<a.length;x++) {
System.out.print(a[x]+" ");
}
System.out.println("]");
}
main()函数
public static void main(String[] args) {
int[] x=new int[]{3,1,2,8,5,10,4,12};
print(x);
selectsort(x);
print(x);
}
输出结果: