算法1:冒泡算法
(1)该算法遵循交换排序的思想,简单稳定。
(2)原理:逐趟进行两两比较,小的一方往前排。
(3)算法代码实现:
public class ArrayTest01 {
public static void main(String[] args) {
int[] arr = {1, 5, 34, 2, 53, 67};
//冒泡排序
bubbleSort(arr);
}
public static void bubbleSort(int[] arr) {
int temp = 0;
for(int i=arr.length-1; i>0; i--) {
for(int j=0; j<i; j++) {
if(arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
算法2:快速排序
(1)该算法采用“分而治之”的思想,把大的拆分为小的,小的再拆分为更小的,高效但不稳定。
(2)原理:在已知需排列的序列中,先找一个固定的比较对象,通过一趟排序后,将原序列分为两部分,比固定的比较对象小的归为一部分,放前边,比固定的比较对象大的归为一部分,放后边,然后递归该过程,直到序列中所有记录均为有序为止。
(3)算法代码实现:
public class ArrayTest01 {
public static void main(String[] args) {
int[] arr = {1, 5, 34, 2, 53, 67};
//快速排序
sort(arr, 0, arr.length-1);
}
public static void sort(int[] arr, int low, int high) {
quickSort(arr, low, high);
System.out.println(Arrays.toString(arr));
}
public static void quickSort(int[] arr, int low, int high) {
if(low >= high)
return;
int start = low;
int end = high;
int temp = arr[low]; //视为固定的比较对象
while(low < high) {
while(low < high && arr[high] >= temp)
high--;
arr[low] = arr[high];
wh