除了冒泡排序,你还应该掌握的几种其他排序
在面试过程中,小伙伴们可能会遇到一些手写排序的问题,一般大家会写冒泡排序,下面提供插入排序和选择排序的代码,供大家参考
public class Sort {
public static int a[]={8,1,9,5,6,4,3,3,7};
/*
* 插入排序
*/
@Test
public void sortA(){
for(int i=1;i<a.length;i++){
int j=i-1;
int temp=a[i];//temp是已排序数据中最大的
for(;j>=0&&a[j]>temp;j--){
a[j+1]=a[j];
}
a[j+1]=temp;
System.out.println(Arrays.toString(a));
}
}
/*
* 选择排序,要区别于冒泡排序,冒泡排序是挨个比较交换位置,选择排序只是选出最大值和未排序的第一个元素交换位置
*/
@Test
public void sortB(){
for(int i=0;i<a.length;i++){
int max=a[i];
int temp=i;
for(int j=i;j<a.length;j++){
if(a[j]>max){
max=a[j];
temp=j;
}
}
if(temp!=i){
a[temp]=a[i];
a[i]=max;
}
}
System.out.println(Arrays.toString(a));
}
}
大家只要敲几遍,就能达到敲得像冒泡排序一样熟练啦~