java实现选择排序
import java.util.*;
public class 乱七八糟的测试 {
public static void main(String[] args) {
int[]a= {2,5,9,8,7,11,52,36,14};
xuanze(a);
for(int x:a) {
System.out.print(x+" ");
}
}
public static void xuanze(int[]a) {
for(int i=a.length-1;i>=0;i--) {
int max=a[0];
int xiabiao=0;
for(int j=0;j<=i;j++) {
if(a[j]>max) {
max=a[j];
xiabiao=j;
}
}
qwe(a,i,xiabiao);
}
}
public static void qwe(int[]a,int b,int c) {
int temp=0;
temp=a[b];
a[b]=a[c];
a[c]=temp;
}
}
算法实现思想:
第一:相比较冒泡算法(详情请见我博客《冒泡排序算法》)选择排序速度更加快。
因为冒泡算法是只要你比我小我就和你交换位置。
但是选择算法是:你比我大,我记录你的下标,循环完成以后我只需要交换一次我和最大数值的下标。
这个就是选择算法和冒泡算法的区别。
第二:一定要将 int max=a[0];单独定义出来,
int xiabiao=0;
如果在内循环中直接写:for(int j=0;j<=i;j++) {
if(a[j]>a[0]) {
a[0]=a[j];
o=j;
}
}
这个是没法保存数值的,每次都会立马替换掉。