java排序算法

简介: 当涉及排序算法时,Java中常见的五种排序算法包括冒泡排序、选择排序、插入排序、归并排序和快速排序

当涉及排序算法时,Java中常见的五种排序算法包括冒泡排序、选择排序、插入排序、归并排序和快速排序。以下是用Java实现这五种排序算法的示例代码:

  1. 冒泡排序(Bubble Sort):

javaCopy code

publicclassBubbleSort {     publicstaticvoidbubbleSort(int[] arr) {         intn= arr.length;         for (inti=0; i < n - 1; i++) {             for (intj=0; j < n - i - 1; j++) {                 if (arr[j] > arr[j + 1]) {                     // 交换位置                    inttemp= arr[j];                     arr[j] = arr[j + 1];                     arr[j + 1] = temp;                 }             }         }     } }

  1. 选择排序(Selection Sort):

javaCopy code

publicclassSelectionSort {     publicstaticvoidselectionSort(int[] arr) {         intn= arr.length;         for (inti=0; i < n - 1; i++) {             intminIndex= i;             for (intj= i + 1; j < n; j++) {                 if (arr[j] < arr[minIndex]) {                     minIndex = j;                 }             }             // 交换位置            inttemp= arr[i];             arr[i] = arr[minIndex];             arr[minIndex] = temp;         }     } }

  1. 插入排序(Insertion Sort):

javaCopy code

publicclassInsertionSort {     publicstaticvoidinsertionSort(int[] arr) {         intn= arr.length;         for (inti=1; i < n; i++) {             intkey= arr[i];             intj= i - 1;             while (j >= 0 && arr[j] > key) {                 arr[j + 1] = arr[j];                 j--;             }             arr[j + 1] = key;         }     } }

  1. 归并排序(Merge Sort):

javaCopy code

publicclassMergeSort {     publicstaticvoidmergeSort(int[] arr, int left, int right) {         if (left < right) {             intmid= (left + right) / 2;             mergeSort(arr, left, mid);             mergeSort(arr, mid + 1, right);             merge(arr, left, mid, right);         }     }     publicstaticvoidmerge(int[] arr, int left, int mid, int right) {         intn1= mid - left + 1;         intn2= right - mid;         int[] L = newint[n1];         int[] R = newint[n2];         for (inti=0; i < n1; i++) {             L[i] = arr[left + i];         }         for (intj=0; j < n2; j++) {             R[j] = arr[mid + 1 + j];         }         inti=0, j = 0, k = left;         while (i < n1 && j < n2) {             if (L[i] <= R[j]) {                 arr[k] = L[i];                 i++;             } else {                 arr[k] = R[j];                 j++;             }             k++;         }         while (i < n1) {             arr[k] = L[i];             i++;             k++;         }         while (j < n2) {             arr[k] = R[j];             j++;             k++;         }     } }

  1. 快速排序(Quick Sort):

javaCopy code

publicclassQuickSort {     publicstaticvoidquickSort(int[] arr, int low, int high) {         if (low < high) {             intpi= partition(arr, low, high);             quickSort(arr, low, pi - 1);             quickSort(arr, pi + 1, high);         }     }     publicstaticintpartition(int[] arr, int low, int high) {         intpivot= arr[high];         inti= low - 1;         for (intj= low; j < high; j++) {             if (arr[j] < pivot) {                 i++;                 // 交换位置                inttemp= arr[i];                 arr[i] = arr[j];                 arr[j] = temp;             }         }         // 将pivot放到正确的位置        inttemp= arr[i + 1];         arr[i + 1] = arr[high];         arr[high] = temp;         return i + 1;     } }

这五种排序算法分别是冒泡排序、选择排序、插入排序、归并排序和快速排序,在不同的场景下有不同的适用性。在实际应用中,我们可以根据数据规模和性能需求选择合适的排序算法。

目录
相关文章
|
1月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
73 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
3月前
|
负载均衡 NoSQL 算法
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
这篇文章是关于Java面试中Redis相关问题的笔记,包括Redis事务实现、集群方案、主从复制原理、CAP和BASE理论以及负载均衡算法和类型。
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
|
3月前
|
搜索推荐 算法 Java
手写快排:教你用Java写出高效排序算法!
快速排序(QuickSort)是经典的排序算法之一,基于分治思想,平均时间复杂度为O(n log n),广泛应用于各种场合。在这篇文章中,我们将手写一个Java版本的快速排序,从基础实现到优化策略,并逐步解析代码背后的逻辑。
156 1
|
1月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
109 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
1月前
|
算法 Java Linux
java制作海报一:java使用Graphics2D 在图片上写字,文字换行算法详解
这篇文章介绍了如何在Java中使用Graphics2D在图片上绘制文字,并实现自动换行的功能。
106 0
|
1月前
|
算法 Java 测试技术
数据结构 —— Java自定义代码实现顺序表,包含测试用例以及ArrayList的使用以及相关算法题
文章详细介绍了如何用Java自定义实现一个顺序表类,包括插入、删除、获取数据元素、求数据个数等功能,并对顺序表进行了测试,最后还提及了Java中自带的顺序表实现类ArrayList。
23 0
|
3月前
|
设计模式 缓存 算法
揭秘策略模式:如何用Java设计模式轻松切换算法?
【8月更文挑战第30天】设计模式是解决软件开发中特定问题的可重用方案。其中,策略模式是一种常用的行为型模式,允许在运行时选择算法行为。它通过定义一系列可互换的算法来封装具体的实现,使算法的变化与客户端分离。例如,在电商系统中,可以通过定义 `DiscountStrategy` 接口和多种折扣策略类(如 `FidelityDiscount`、`BulkDiscount` 和 `NoDiscount`),在运行时动态切换不同的折扣逻辑。这样,`ShoppingCart` 类无需关心具体折扣计算细节,只需设置不同的策略即可实现灵活的价格计算,符合开闭原则并提高代码的可维护性和扩展性。
66 2
|
3月前
|
安全 算法 Java
java系列之~~网络通信安全 非对称加密算法的介绍说明
这篇文章介绍了非对称加密算法,包括其定义、加密解密过程、数字签名功能,以及与对称加密算法的比较,并解释了非对称加密在网络安全中的应用,特别是在公钥基础设施和信任网络中的重要性。
|
3月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
52 6
|
3月前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
70 2
下一篇
无影云桌面