ToB企服应用市场:ToB评测及商务社交产业平台

标题: java 实现排序的几种方式 [打印本页]

作者: 羊蹓狼    时间: 2024-12-24 11:38
标题: java 实现排序的几种方式
     
     
     
                                   登录后复制                        
  1. public class BubbleSort {
  2.     public static void bubbleSort(int[] arr) {
  3.         int n = arr.length;
  4.         for (int i = 0; i < n - 1; i++) {
  5.             for (int j = 0; j < n - i - 1; j++) {
  6.                 if (arr[j] > arr[j + 1]) {
  7.                     // 交换元素
  8.                     int temp = arr[j];
  9.                     arr[j] = arr[j + 1];
  10.                     arr[j + 1] = temp;
  11.                 }
  12.             }
  13.         }
  14.     }
  15.     public static void main(String[] args) {
  16.         int[] arr = {5, 4, 3, 2, 1};
  17.         System.out.println("Before sorting:");
  18.         for (int num : arr) {
  19.             System.out.print(num + " ");
  20.         }
  21.         System.out.println();
  22.         bubbleSort(arr);
  23.         System.out.println("After sorting:");
  24.         for (int num : arr) {
  25.             System.out.print(num + " ");
  26.         }
  27.     }
  28. }
复制代码
      
                       
     
     
     
          
     
     
                                   登录后复制                        
  1. public class SelectionSort {
  2.     public static void selectionSort(int[] arr) {
  3.         int n = arr.length;
  4.         for (int i = 0; i < n - 1; i++) {
  5.             int minIndex = i;
  6.             for (int j = i + 1; j < n; j++) {
  7.                 if (arr[j] < arr[minIndex]) {
  8.                     minIndex = j;
  9.                 }
  10.             }
  11.             // 交换元素
  12.             if (minIndex!= i) {
  13.                 int temp = arr[i];
  14.                 arr[i] = arr[minIndex];
  15.                 arr[minIndex] = temp;
  16.             }
  17.         }
  18.     }
  19.     public static void main(String[] args) {
  20.         int[] arr = {5, 4, 3, 2, 1};
  21.         System.out.println("Before sorting:");
  22.         for (int num : arr) {
  23.             System.out.print(num + " ");
  24.         }
  25.         System.out.println();
  26.         selectionSort(arr);
  27.         System.out.println("After sorting:");
  28.         for (int num : arr) {
  29.             System.out.print(num + " ");
  30.         }
  31.     }
  32. }
复制代码
      
                       
     
     
     
          
     
     
                                   登录后复制                        
  1. public class InsertionSort {
  2.     public static void insertionSort(int[] arr) {
  3.         int n = arr.length;
  4.         for (int i = 1; i < n; i++) {
  5.             int key = arr[i];
  6.             int j = i - 1;
  7.             while (j >= 0 && arr[j] > key) {
  8.                 arr[j + 1] = arr[j];
  9.                 j = j - 1;
  10.             }
  11.             arr[j + 1] = key;
  12.         }
  13.     }
  14.     public static void main(String[] args) {
  15.         int[] arr = {5, 4, 3, 2, 1};
  16.         System.out.println("Before sorting:");
  17.         for (int num : arr) {
  18.             System.out.print(num + " ");
  19.         }
  20.         System.out.println();
  21.         insertionSort(arr);
  22.         System.out.println("After sorting:");
  23.         for (int num : arr) {
  24.             System.out.print(num + " ");
  25.         }
  26.     }
  27. }
复制代码
      
                       
     
     
     
          
     
     
                                   登录后复制                        
  1. public class QuickSort {
  2.     public static void quickSort(int[] arr, int low, int high) {
  3.         if (low < high) {
  4.             int pivotIndex = partition(arr, low, high);
  5.             quickSort(arr, low, pivotIndex - 1);
  6.             quickSort(arr, pivotIndex + 1, high);
  7.         }
  8.     }
  9.     private static int partition(int[] arr, int low, int high) {
  10.         int pivot = arr[high];
  11.         int i = low - 1;
  12.         for (int j = low; j < high; j++) {
  13.             if (arr[j] <= pivot) {
  14.                 i++;
  15.                 // 交换元素
  16.                 int temp = arr[i];
  17.                 arr[i] = arr[j];
  18.                 arr[j] = temp;
  19.             }
  20.         }
  21.         // 交换元素
  22.         int temp = arr[i + 1];
  23.         arr[i + 1] = arr[high];
  24.         arr[high] = temp;
  25.         return i + 1;
  26.     }
  27.     public static void main(String[] args) {
  28.         int[] arr = {5, 4, 3, 2, 1};
  29.         System.out.println("Before sorting:");
  30.         for (int num : arr) {
  31.             System.out.print(num + " ");
  32.         }
  33.         System.out.println();
  34.         quickSort(arr, 0, arr.length - 1);
  35.         System.out.println("After sorting:");
  36.         for (int num : arr) {
  37.             System.out.print(num + " ");
  38.         }
  39.     }
  40. }
复制代码
      
                       
     
     
     
          
     
     
                                   登录后复制                        
  1. public class MergeSort {
  2.     public static void mergeSort(int[] arr) {
  3.         if (arr.length > 1) {
  4.             int mid = arr.length / 2;
  5.             int[] left = new int[mid];
  6.             int[] right;
  7.             if (arr.length % 2 == 0) {
  8.                 right = new int[mid];
  9.             } else {
  10.                 right = new int[mid + 1];
  11.             }
  12.             for (int i = 0; i < mid; i++) {
  13.                 left[i] = arr[i];
  14.             }
  15.             for (int i = mid; i < arr.length; i++) {
  16.                 right[i - mid] = arr[i];
  17.             }
  18.             mergeSort(left);
  19.             mergeSort(right);
  20.             merge(arr, left, right);
  21.         }
  22.     }
  23.     private static void merge(int[] result, int[] left, int[] right) {
  24.         int i = 0, j = 0, k = 0;
  25.         while (i < left.length && j < right.length) {
  26.             if (left[i] < right[j]) {
  27.                 result[k] = left[i];
  28.                 i++;
  29.             } else {
  30.                 result[k] = right[j];
  31.                 j++;
  32.             }
  33.             k++;
  34.         }
  35.         while (i < left.length) {
  36.             result[k] = left[i];
  37.             i++;
  38.             k++;
  39.         }
  40.         while (j < right.length) {
  41.             result[k] = right[j];
  42.             j++;
  43.             k++;
  44.         }
  45.     }
  46.     public static void main(String[] args) {
  47.         int[] arr = {5, 4, 3, 2, 1};
  48.         System.out.println("Before sorting:");
  49.         for (int num : arr) {
  50.             System.out.print(num + " ");
  51.         }
  52.         System.out.println();
  53.         mergeSort(arr);
  54.         System.out.println("After sorting:");
  55.         for (int num : arr) {
  56.             System.out.print(num + " ");
  57.         }
  58.     }
  59. }
复制代码
      
                       
     
     
     
          
     
     
                                   登录后复制                        
  1. public class HeapSort {
  2.     public static void heapSort(int[] arr) {
  3.         int n = arr.length;
  4.         // 构建最大堆
  5.         for (int i = n / 2 - 1; i >= 0; i--) {
  6.             heapify(arr, n, i);
  7.         }
  8.         for (int i = n - 1; i > 0; i--) {
  9.             // 交换堆顶元素和最后一个元素
  10.             int temp = arr[0];
  11.             arr[0] = arr[i];
  12.             arr[i] = temp;
  13.             // 调整堆
  14.             heapify(arr, i, 0);
  15.         }
  16.     }
  17.     private static void heapify(int[] arr, int n, int i) {
  18.         int largest = i;
  19.         int l = 2 * i + 1;
  20.         int r = 2 * i + 2;
  21.         if (l < n && arr[l] > arr[largest]) {
  22.             largest = l;
  23.         }
  24.         if (r < n && arr[r] > arr[largest]) {
  25.             largest = r;
  26.         }
  27.         if (largest!= i) {
  28.             int temp = arr[i];
  29.             arr[i] = arr[largest];
  30.             arr[largest] = temp;
  31.             heapify(arr, n, largest);
  32.         }
  33.     }
  34.     public static void main(String[] args) {
  35.         int[] arr = {5, 4, 3, 2, 1};
  36.         System.out.println("Before sorting:");
  37.         for (int num : arr) {
  38.             System.out.print(num + " ");
  39.         }
  40.         System.out.println();
  41.         heapSort(arr);
  42.         System.out.println("After sorting:");
  43.         for (int num : arr) {
  44.             System.out.print(num + " ");
  45.         }
  46.     }
  47. }
复制代码
      
                       
     
     
     

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4