1:冒泡排序:
package ch02;
/**
* 冒泡排序
* @author xxg
*
*/
public class BubbleSort {
public static void sort(long[] arr) {
long tmp = 0;
for(int i = 0; i < arr.length - 1; i++) {
// 从最后一个元素开始比较,每次循环将最小的往前面移动一位
for(int j = arr.length - 1; j > i; j--) {
// 内层循环比较
if(arr[j] < arr[j - 1]) {
//进行交换
tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
}
}
}
}
}
2: 选择排序:
package ch02;
/**
* 选择排序,比冒泡排序效率高
* @author xxg
*
*/
public class SelectionSort {
public static void sort(long[] arr) {
int k = 0;// 记录最小值的索引
long tmp = 0;
for(int i = 0; i < arr.length - 1; i++) {
k = i;
// 内层循环比较
for(int j = i; j < arr.length; j++) {
if(arr[j] < arr[k]) {
k = j;// 比较之后,将最小值的索引位置赋值为k
}
}
// 交换位置
tmp = arr[i];
arr[i] = arr[k];
arr[k] = tmp;
}
}
}
3: 插入排序
package ch02;
/**
* 插入排序
* @author xxg
*
*/
public class InsertSort {
public static void sort(long[] arr) {
long tmp = 0;
for(int i = 1; i < arr.length; i++) {
tmp = arr[i]; //tmp = arr[1]
int j = i;
while(j > 0 && arr[j] >= tmp) {
arr[j] = arr[j - 1]; // arr[1] = arr[0]
j--;
}
arr[j] = tmp; // arr[0] = tmp
}
}
}
测试排序算法:
package ch02;
public class TestSort {
public static void main(String[] args) {
long[] arr = new long[5];
arr[0] = 34;
arr[1] = 23;
arr[2] = 2;
arr[3] = 1;
arr[4] = -4;
System.out.print("[");
for(long num : arr) {
System.out.print(num + " ");
}
System.out.print("]");
System.out.println();
// 测试三种排序算法
// BubbleSort.sort(arr);
// InsertSort.sort(arr);
SelectionSort.sort(arr);
System.out.print("[");
for(long num : arr) {
System.out.print(num + " ");
}
System.out.print("]");
System.out.println();
}
}