Java中常用的几种排序算法及其实现函数有哪些?
发布时间:2023-06-05 04:24:49
Java中常用的几种排序算法及其实现函数主要包括冒泡排序、插入排序、快速排序、归并排序和选择排序等。
1. 冒泡排序
冒泡排序是一种基本的排序算法,其原理是重复地遍历数组,每次比较相邻两个元素的大小并交换位置,直到整个数组有序。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]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
2. 插入排序
插入排序也是一种简单的排序算法,其原理是依次将数组中的元素插入到有序的序列中。Java中插入排序的实现函数如下:
public static void insertSort(int[] arr){
int n = arr.length;
for(int i=1; i<n; i++){
int j = i;
while(j>0 && arr[j]<arr[j-1]){
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
j--;
}
}
}
3. 快速排序
快速排序是一种高效的排序算法,其原理是选取一个基准数,将数组分为左右两部分,左边是小于基准数的数,右边是大于基准数的数,再对左右两部分递归进行快速排序。Java中快速排序的实现函数如下:
public static void quickSort(int[] arr, int left, int right){
if(left<right){
int i = left, j = right, pivot = arr[left];
while(i<j){
while(i<j && arr[j]>=pivot){
j--;
}
if(i<j){
swap(arr, i, j);
i++;
}
while(i<j && arr[i]<=pivot){
i++;
}
if(i<j){
swap(arr, i, j);
j--;
}
}
arr[i] = pivot;
quickSort(arr, left, i-1);
quickSort(arr, i+1, right);
}
}
public static void swap(int[] arr, int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
4. 归并排序
归并排序是一种稳定的排序算法,其原理是将数组分成两半,对每一部分进行排序,然后对两部分进行合并。Java中归并排序的实现函数如下:
public static void mergeSort(int[] arr, int left, int right){
if(left<right){
int mid = (left+right)/2;
mergeSort(arr, left, mid);
mergeSort(arr, mid+1, right);
merge(arr, left, mid, right);
}
}
public static void merge(int[] arr, int left, int mid, int right){
int[] temp = new int[right-left+1];
int i = left, j = mid+1, k = 0;
while(i<=mid && j<=right){
if(arr[i]<=arr[j]){
temp[k++] = arr[i++];
}else{
temp[k++] = arr[j++];
}
}
while(i<=mid){
temp[k++] = arr[i++];
}
while(j<=right){
temp[k++] = arr[j++];
}
for(int p=0; p<temp.length; p++){
arr[left+p] = temp[p];
}
}
5. 选择排序
选择排序是一种简单的排序算法,其原理是每次选择未排序部分的最小值,放到已排序部分的最后。Java中选择排序的实现函数如下:
public static void selectSort(int[] arr){
int n = arr.length;
for(int i=0; i<n-1; i++){
int minIdx = i;
for(int j=i+1; j<n; j++){
if(arr[j]<arr[minIdx]){
minIdx = j;
}
}
int temp = arr[i];
arr[i] = arr[minIdx];
arr[minIdx] = temp;
}
}
以上就是Java中常用的几种排序算法及其实现函数的介绍。不同的算法适用于不同的情况,需要根据具体情况选择合适的算法。
