关注分享主机优惠活动
国内外VPS云服务器

如何用Java排序实现稳定排序(Java排序的一些方法)

在Java中,可以使用归并排序或计数排序来实现稳定排序。 这里我们介绍一下这两种排序方法。

  1. 归并排序:

归并排序是一种分治算法。 将数组分成两半,对每一半进行递归排序,最后将已排序的两半合并为一个已排序的数组。 合并排序是一种稳定的排序算法,因为相等的元素在合并过程中保持其原始顺序。

下面是合并排序的 Java 实现:

public  合并排序 {
 public 静态 void main(String[] args) {
 int[] arr = {38, 27, 433982, 10};
 mergeSort(arr, 0} span> span>, arr.length - 1);
 for ( int num : arr) {
 System.out.print(num + " ");
 }
 } 
 
 公共 静态 void mergeSort(int[] arr, int 左,int 右) {
 if (左<右) {
 int mid =(左 + 右)/ 2;
 mergeSort(arr, left, middle);
 mergeSort(arr, middle + 1, right) ;
 合并(arr, 左, 中, 右);
 }
 }

 public 静态 无效 合并 (int[] arr,int 左,int 中间,int 右) {
 int[] temp =  int[右 - 左 + 1];
 int i = 左;
 int j = mid + 1;
 int k = 0;

 之间 (我 <= 中间 && j <= 右) {
 if (arr[i] <= arr[j]) {
 temp[k++] = arr[i++];
 } else {
 temp[k++] = arr[j++];
 }
 }

 之间 (i <= Mid) {
 temp[k++] = arr[i++];
 }

 while (j <= right ) { 
 temp[k++] = arr[j++];
 }

 System.arraycopy(temp, 0, arr, left , temp.length );
 }
}
  1. 计数排序(排序):

计数排序是一种非比较排序算法,通过计算数组中每个元素出现的次数来排序,这是因为当元素相等时排序算法是稳定的。处理时相对顺序保持不变

这是计数排序的 Java 实现:

公开 计数排序 {
 公共 静态 无效 main(String[] args) {
 int[] arr = {38, 27, 433982, 10};
 计数排序(arr);
 for (int num : arr) {
 System.out.print(num + " ");
 }
 }

 公共 静态 void 计数排序(int[] arr) {
 if (arr == null || arr.length == 0) {
 返回;
 }

 int 最大 = Integer.MIN_VALUE;
 int 分钟 = Integer.MAX_VALUE;
 for (int num : arr) {
 max = Math.max(max, num);
 min = Math.min(min, num);
 }

 int[]计数 =  int[最大值 - 最小值 + 1];
 for (int num : arr) {
 count[num ] - 分钟]++;
 }

 int 索引 = 0;
 for (int i = 0; i++) {
 while (count[i] > 0) {
 arr[index++ ] ] = i + min;
 count[i]--;
 }
 }
 }
}

请注意,计数排序仅在以下情况下有效: 使用整型数组时,最大值和最小值的差值不能太大。 如果太大,count数组会占用大量内存。

以上内容来源于互联网,不代表本站全部观点。 欢迎关注:zhujipindao.com

未经允许不得转载:主机频道 » 如何用Java排序实现稳定排序(Java排序的一些方法)

评论 抢沙发

评论前必须登录!