1. **冒泡排序(Bubble Sort)**
冒泡排序是一种简单直观的比较类排序方法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。直到没有再需要交换,则该次排序完成。
java
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++)
for (int j = 0; j < n - i - 1; j++)
if (arr[j] > arr[j + 1]) {
// swap arr[j+1] and arr[i]
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
2. **选择排序(Selection Sort)**
选择排序是每一次从待排记录中选出最小的一个或者最大的一个记录,存放在序列的起始位置,并与未排序区的第一个纪录交换之。
java
public class SelectionSortExample {
public static void selectionsort(int array[]) {
for (int i = 0; i < array.length-1; i++) {
int index=i;
for (int j = i+1; j < array.length ; j++ )
if(array[index]>array[j])
index=j;
/* Swap the found minimum element with the first element of the unsorted part */
int tmp=array[index];
array[index]=array[i];
array[i]=tmp;
}
}
}
3. **插入排序(Insertion Sort)**
插入排序的工作原理类似于打扑克牌:每一张新来的卡片都会被放到正确的位置上以保持手上的卡牌一直是有序状态。
java
public class InsertionSortExample{
public static void insertionSort(int [] numbers){
int size=numbers.length;
for(int step=1;step<size;step++){
int key=numbers[step];
int j=step-1;
while((j>=0)&&(numbers[j]>key)){
numbers[j+1]=numbers[j];
j--;
}
numbers[j+1]=key;
}
}
}
4. **快速排序(QickSort)**
这是一种分治策略的经典应用实例,通过选取基准值划分数组为两部分,一部分的所有数字小于另一部分的所有数字,然后递归调用自身来继续细分这两部分。
java
public class QuickSort {
private void quickSort(int[] nums, int low, int high) {
if(low >= high)
return ;
int pivotIndex = partition(nums,low ,high);
quickSort(nums, low, pivotIndex-1);
quickSort(nums,pivotIndex+1, high);
}
private int partition(int[]nums,int low, int high){
int pivotValue = nums[(low + high)/2];
while(low <= high){
while(nums[low] < pivotValue)
++low ;
while(nums[high] > pivotValue)
--high ;
if(low <= high){
int temporaryPivot = nums[low];
nums[low++] = nums[high];
nums[high--] = temporaryPivot;
}
}
return low;
}
public void sortArray(int[] inputArr){
this.quickSort(inputArr,0,inputArr.length-1 );
}
}
// 使用:
QuickSort qs = new QuickSort();
qs.sortArray(arr);
5. **Arrays.sort()内置函数**
Java还提供了标准库中的` Arrays.sort()` 方法用于直接给对象和原始类型数组排序。此方法内部采用优化过的TimSort排序算法:
java
import java.util.Arrays;
public class ArraySortingDemo {
public static void main(String args[]){
Integer arr[] ={9,-8,76,5,3};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
}
}
总结来说,以上几种只是众多Java数组排序实现方式的一小部分内容,实际开发过程中可以根据具体需求、效率要求以及空间复杂度等因素灵活选用合适的排序算法。同时了解这些基本排序逻辑对于理解更复杂的高级排序技术有着举足轻重的作用。