排序算法中的Java函数实现比较
发布时间:2023-06-22 05:59:42
排序算法是计算机科学中的基本算法之一,是将一组数据按照特定的规则进行排列的过程。在实际开发中,需要对数据进行排序,以提高程序的效率。目前常用的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。
Java语言作为一种高级语言,提供了丰富的排序函数,相对于C语言而言更加简单和方便,下面对常用的几种排序算法进行Java函数实现的比较。
1.冒泡排序
冒泡排序是一种简单的排序算法,通过不断交换相邻两个元素的位置,使得数列按照一定的顺序排列。下面是Java函数实现:
public static void bubbleSort(int[] arr) {
int temp;
for(int i=0;i<arr.length-1;i++) {
for(int j=0;j<arr.length-1-i;j++) {
if(arr[j]>arr[j+1]) {
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
2.插入排序
插入排序是将数组中的元素逐个插入到已经排好序的部分中。具体实现过程为:每次将一个待排序的元素,插入有序数组中的适当位置,直到全部元素都插入到有序序列为止。下面是Java函数实现:
public static void insertSort(int[] arr) {
int temp;
int j;
for(int i=1;i<arr.length;i++) {
temp=arr[i];
j=i;
while(j>0 && arr[j-1]>temp) {
arr[j]=arr[j-1];
j--;
}
arr[j]=temp;
}
}
3.选择排序
选择排序是将未排序的序列中最小的数放到已排序序列的末尾。具体实现为:每次选择一个最小值,然后交换到序列的当前位置,直到所有元素都排好序。下面是Java函数实现:
public static void selectSort(int[] arr) {
int temp;
int minIndex;
for(int i=0;i<arr.length-1;i++) {
minIndex=i;
for(int j=i+1;j<arr.length;j++) {
if(arr[minIndex]>arr[j]) {
minIndex=j;
}
}
if(minIndex!=i) {
temp=arr[i];
arr[i]=arr[minIndex];
arr[minIndex]=temp;
}
}
}
4.快速排序
快速排序是一种效率较高的排序算法,采用“分治”思想,将待排序列分为两个子序列,对两个子序列进行递归排序,直到整个序列有序。下面是Java函数实现:
public static void quickSort(int[] arr) {
quickSort(arr,0,arr.length-1);
}
private static void quickSort(int[] arr,int low,int high) {
if(low<high) {
int pivotIndex=partition(arr,low,high);
quickSort(arr,low,pivotIndex-1);
quickSort(arr,pivotIndex+1,high);
}
}
private static int partition(int[] arr,int low,int high) {
int pivot=arr[low];
int left=low;
int right=high;
while(left<right) {
while(left<right && arr[right]>=pivot) {
right--;
}
while(left<right && arr[left]<=pivot) {
left++;
}
if(left<right) {
int temp=arr[left];
arr[left]=arr[right];
arr[right]=temp;
}
}
arr[low]=arr[left];
arr[left]=pivot;
return left;
}
5.归并排序
归并排序是将序列分为若干个子序列,对每个子序列进行排序,然后将排好序的子序列合并成一个有序序列。具体实现过程为:先进行分解,再合并,直到子序列的长度为1为止。下面是Java函数实现:
public static void mergeSort(int[] arr) {
mergeSort(arr,0,arr.length-1,new int[arr.length]);
}
private static void mergeSort(int[] arr,int left,int right,int[] temp) {
if(left<right) {
int mid=(left+right)/2;
mergeSort(arr,left,mid,temp);
mergeSort(arr,mid+1,right,temp);
merge(arr,left,mid,right,temp);
}
}
private static void merge(int[] arr,int left,int mid,int right,int[] temp) {
int i=left;
int j=mid+1;
int t=0;
while(i<=mid && j<=right) {
if(arr[i]<=arr[j]) {
temp[t++]=arr[i++];
} else {
temp[t++]=arr[j++];
}
}
while(i<=mid) {
temp[t++]=arr[i++];
}
while(j<=right) {
temp[t++]=arr[j++];
}
t=0;
while(left<=right) {
arr[left++]=temp[t++];
}
}
综上所述,Java提供了一系列常用的排序函数,将数组排序变得更加简单方便。在实际使用时,我们可以根据不同的排序需求,选择合适的排序算法,从而提高程序的效率。
