排序虽然在应用开发中并用不到多少,而且API中也自带有自己的排序方法,并且效率还非常高。之所以拿出来写,是因为在公司进行笔试的时候经常要用到。下面给出几种常用的排序。包括选择排序、插入排序以及冒泡排序。
package test;
import java.util.Arrays;
/**
* 选择排序:
* 排序规则:
* 1 将数组中的每一个元素和第一个元素比较,如果这个元素小于第一个元素,则交换这两个元素
* 2 循环第一条规则,找出最小元素,放在第一个位置
* 3 经过n-1轮比较完成排序
* @author wkj
*
*/
public class Selection {
public static void main(String[] args) {
int[] ary = new int[]{5,3,7,8,2};
System.out.println(Arrays.toString(execute(ary)));
}
public static int[] execute(int[] ary){
for(int i=0;i<ary.length-1;i++){
for(int j=i+1 ;j<ary.length;j++){
if(ary[i]>ary[j]){
int temp = ary[i];
ary[i] = ary[j];
ary[j] = temp;
}
}
}
return ary;
}
}
package test;
import java.util.Arrays;
/**
* 插入排序
* 排序规则:
* 1 将数组分成两部分,将后部分的第一个逐一与前部分的第一个元素比较,在合理的位置插入
* 2 插入排序算法的效率要高于选择排序和冒泡排序
* @author wkj
*
*/
public class Insert {
public static void main(String[] args) {
int[] ary = new int[]{5,3,7,8,2};
System.out.println(Arrays.toString(execute(ary)));
}
//TODO 个排序比较难理解
public static int[] execute(int[] ary){
int i,j,t;
for(i=1;i<ary.length;i++){
t = ary[i];
for(j=i-1;j>=0;j--){
if(t<ary[j]){
ary[j+1] = ary[j];
}else{
break;
}
}
ary[j+1] = t;
}
return ary;
}
}
package test;
import java.util.Arrays;
/**
* 冒泡排序
* 排序规则:比较相邻的两个元素,将小的的放在前面
* @author wkj
*
*/
public class Bubble {
public static void main(String[] args) {
int[] ary = new int[]{5,3,7,8,2};
System.out.println(Arrays.toString(execute(ary)));
}
public static int[] execute(int[] ary){
for(int i = 0;i<ary.length-1;i++){
for(int j = 0;j<ary.length-i-1;j++){
if(ary[j]>ary[j+1]){
int temp = ary[j];
ary[j] = ary[j+1];
ary[j+1] = temp;
}
}
}
return ary;
}
}
这些排序希望能够给在面试中助你一臂之力