总结了冒泡排序、选择排序、插入排序、堆排序、快速排序、归并排序、topk排序
工具类:
public class ArrayUtils {
public static void printArray(int[] array) {
// TODO Auto-generated method stub
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
}
public static void exchangeElements(int[] array, int i, int i2) {
// TODO Auto-generated method stub
int temp = array[i];
array[i] = array[i2];
array[i2] = temp;
}
}
1.冒泡排序
package sort;
public class BubbleSort {
public static void bubbleSort(int a[]) {
int temp = 0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length - 1 - i; j++) {
if (a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
public static void main(String[] args) {
int a[] = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62, 99, 98, 54, 56, 17, 18, 23, 34, 15, 35,
25, 53, 51 };
bubbleSort(a);
for (int i = 0; i < a.length; i++)
System.out.println(a[i]);
}
}
2.插入排序
public class insert{ //比喻成摸牌。从0开始但是手中的牌是拍好的
public static void insertSort(int[] a) {
int length=a.length; //数组长度
int j; //当前值的位置
int i; //指向j前的位置
int key; //当前要进行插入排序的值
//从数组的第二个位置开始遍历值
for(j=1;j<length;j++){
key=a[j];
i=j-1;
//a[i]比当前值大时,a[i]后移一位,空出i的位置,好让下一次循环的值后移
while(i>=0 && key<a[i]){
a[i+1]=a[i]; //将a[i]值后移
i--; //i前移
}//跳出循环(找到要插入的中间位置或已遍历到0下标)
a[i+1]=key; //将当前值插入
}
}
public static void main(String[] args) {
int[] array = { 3, -1, 0, -8, 2, 1 };
ArrayUtils.printArray(array);
insertSort(array);
ArrayUtils.printArray(array);
}
}
3.选择排序
package sort;
public class selectSort {
public static void SelectionSort(int a[]){
if (a == null || a.length <= 0) {
return;
}