网站做自适应,做网站的目的和意义,南昌seo排名外包,免备案虚拟主机空间排序是计算机科学中的基本操作#xff0c;Java 提供了多种排序算法来满足不同的需求。常见的排序算法包括冒泡排序、选择排序、插入排序、归并排序、快速排序和堆排序。本文将逐一介绍这些排序算法及其 Java 实现。
1. 冒泡排序 (Bubble Sort)
冒泡排序是一种简单的排序算法…
排序是计算机科学中的基本操作Java 提供了多种排序算法来满足不同的需求。常见的排序算法包括冒泡排序、选择排序、插入排序、归并排序、快速排序和堆排序。本文将逐一介绍这些排序算法及其 Java 实现。
1. 冒泡排序 (Bubble Sort)
冒泡排序是一种简单的排序算法其基本思想是通过重复遍历待排序的元素比较相邻元素并交换位置直到所有元素有序。时间复杂度为 O(n^2)适合小规模数据的排序。
1.1 算法步骤
从头到尾遍历数组。比较相邻的元素如果前一个元素大于后一个元素则交换它们。重复步骤 1 和 2直到没有元素需要交换为止。
1.2 Java 实现 java
复制代码
public class BubbleSort { public static void bubbleSort(int[] arr) { int n arr.length; for (int i 0; i n - 1; i) { for (int j 0; j n - 1 - i; j) { if (arr[j] arr[j 1]) { int temp arr[j]; arr[j] arr[j 1]; arr[j 1] temp; } } } } }
2. 选择排序 (Selection Sort)
选择排序是一种简单的排序算法其基本思想是每次从未排序的部分中选择最小或最大的元素并将其放到已排序部分的末尾。时间复杂度为 O(n^2)适用于小规模数据。
2.1 算法步骤
从未排序的部分选择最小元素。将选出的最小元素与未排序部分的第一个元素交换。将已排序部分的范围扩展重复步骤 1 和 2。
2.2 Java 实现 java
复制代码
public class SelectionSort { public static void selectionSort(int[] arr) { int n arr.length; for (int i 0; i n - 1; i) { int minIndex i; for (int j i 1; j n; j) { if (arr[j] arr[minIndex]) { minIndex j; } } int temp arr[minIndex]; arr[minIndex] arr[i]; arr[i] temp; } } }
3. 插入排序 (Insertion Sort)
插入排序是一种简单直观的排序算法其基本思想是将待排序的数据分为已排序和未排序两部分每次从未排序部分取出一个元素将其插入到已排序部分的正确位置。时间复杂度为 O(n^2)适用于小规模数据或部分已排序的数据。
3.1 算法步骤
从第二个元素开始向前与已排序部分比较。如果当前元素小于已排序部分的元素则将已排序部分的元素右移直到找到合适的位置。插入当前元素扩展已排序部分的范围。
3.2 Java 实现 java
复制代码
public class InsertionSort { public static void insertionSort(int[] arr) { int n arr.length; for (int i 1; i n; i) { int key arr[i]; int j i - 1; while (j 0 arr[j] key) { arr[j 1] arr[j]; j--; } arr[j 1] key; } } }
4. 归并排序 (Merge Sort)
归并排序是一种有效的排序算法基于分治法其基本思想是将数组分成两个子数组分别排序然后将排序好的子数组合并。时间复杂度为 O(n log n)适用于大规模数据的排序。
4.1 算法步骤
将数组递归地分成两半直到每个子数组只有一个元素。合并已排序的子数组形成排序好的更大子数组。重复步骤 2直到所有子数组合并成一个排序好的数组。
4.2 Java 实现 java
复制代码
public class MergeSort { public static void mergeSort(int[] arr) { if (arr.length 2) return; int mid arr.length / 2; int[] left new int[mid]; int[] right new int[arr.length - mid]; System.arraycopy(arr, 0, left, 0, mid); System.arraycopy(arr, mid, right, 0, arr.length - mid); mergeSort(left); mergeSort(right); merge(arr, left, right); } private static void merge(int[] arr, int[] left, int[] right) { int i 0, j 0, k 0; while (i left.length j right.length) { if (left[i] right[j]) { arr[k] left[i]; } else { arr[k] right[j]; } } while (i left.length) arr[k] left[i]; while (j right.length) arr[k] right[j]; } }
5. 快速排序 (Quick Sort)
快速排序是一种高效的排序算法基于分治法其基本思想是通过一个“基准”元素将数组分为两部分一部分比基准小另一部分比基准大然后递归地排序这两部分。时间复杂度为 O(n log n)但在最坏情况下为 O(n^2)适用于大规模数据。
5.1 算法步骤
选择一个基准元素。将数组分成两部分一部分小于基准一部分大于基准。递归地对这两部分进行快速排序。
5.2 Java 实现 java
复制代码
public class QuickSort { public static void quickSort(int[] arr, int low, int high) { if (low high) { int pi partition(arr, low, high); quickSort(arr, low, pi - 1); quickSort(arr, pi 1, high); } } private static int partition(int[] arr, int low, int high) { int pivot arr[high]; int i (low - 1); for (int j low; j high; j) { if (arr[j] pivot) { i; int temp arr[i]; arr[i] arr[j]; arr[j] temp; } } int temp arr[i 1]; arr[i 1] arr[high]; arr[high] temp; return i 1; } }
6. 堆排序 (Heap Sort)
堆排序是一种基于堆数据结构的排序算法时间复杂度为 O(n log n)。它的基本思想是将数组视为一个堆通过调整堆的结构使得每次都可以将最大元素或最小元素取出重复此操作直到排序完成。
6.1 算法步骤
建立一个最大堆或最小堆。取出堆顶元素将其与堆的最后一个元素交换然后调整堆。重复步骤 2直到堆为空。
6.2 Java 实现 java
复制代码
public class HeapSort { public static void heapSort(int[] arr) { int n arr.length; for (int i n / 2 - 1; i 0; i--) { heapify(arr, n, i); } for (int i n - 1; i 0; i--) { int temp arr[0]; arr[0] arr[i]; arr[i] temp; heapify(arr, i, 0); } } private static void heapify(int[] arr, int n, int i) { int largest i; int left 2 * i 1; int right 2 * i 2; if (left n arr[left] arr[largest]) { largest left; } if (right n arr[right] arr[largest]) { largest right; } if (largest ! i) { int swap arr[i]; arr[i] arr[largest]; arr[largest] swap; heapify(arr, n, largest); } } }
总结
本文介绍了常见的 Java 排序算法包括冒泡排序、选择排序、插入排序、归并排序、快速排序和堆排序。每种排序算法都有其特定的应用场景和优缺点了解这些算法的基本原理和实现方法可以帮助你在实际编程中选择最合适的排序方法。希望本文的讲解能帮助你更好地掌握和应用这些排序算法。如果你有任何问题或需要进一步的详细说明欢迎留言讨论 文章转载自: http://www.morning.zztmk.cn.gov.cn.zztmk.cn http://www.morning.bwqcx.cn.gov.cn.bwqcx.cn http://www.morning.nfmtl.cn.gov.cn.nfmtl.cn http://www.morning.pwbps.cn.gov.cn.pwbps.cn http://www.morning.ltcnd.cn.gov.cn.ltcnd.cn http://www.morning.ljcjc.cn.gov.cn.ljcjc.cn http://www.morning.hnrls.cn.gov.cn.hnrls.cn http://www.morning.yqzyp.cn.gov.cn.yqzyp.cn http://www.morning.snxbf.cn.gov.cn.snxbf.cn http://www.morning.flchj.cn.gov.cn.flchj.cn http://www.morning.ctswj.cn.gov.cn.ctswj.cn http://www.morning.xkyqq.cn.gov.cn.xkyqq.cn http://www.morning.pgrsf.cn.gov.cn.pgrsf.cn http://www.morning.nmkfy.cn.gov.cn.nmkfy.cn http://www.morning.qxbsq.cn.gov.cn.qxbsq.cn http://www.morning.jtmql.cn.gov.cn.jtmql.cn http://www.morning.tbhf.cn.gov.cn.tbhf.cn http://www.morning.cbqqz.cn.gov.cn.cbqqz.cn http://www.morning.ylpwc.cn.gov.cn.ylpwc.cn http://www.morning.vuref.cn.gov.cn.vuref.cn http://www.morning.kjrlp.cn.gov.cn.kjrlp.cn http://www.morning.ssgqc.cn.gov.cn.ssgqc.cn http://www.morning.tfwr.cn.gov.cn.tfwr.cn http://www.morning.yhdqq.cn.gov.cn.yhdqq.cn http://www.morning.dnconr.cn.gov.cn.dnconr.cn http://www.morning.rqnzh.cn.gov.cn.rqnzh.cn http://www.morning.nwfxp.cn.gov.cn.nwfxp.cn http://www.morning.rwlsr.cn.gov.cn.rwlsr.cn http://www.morning.trrpb.cn.gov.cn.trrpb.cn http://www.morning.kmwbq.cn.gov.cn.kmwbq.cn http://www.morning.newfeiya.com.cn.gov.cn.newfeiya.com.cn http://www.morning.mlfmj.cn.gov.cn.mlfmj.cn http://www.morning.lgmgn.cn.gov.cn.lgmgn.cn http://www.morning.zztkt.cn.gov.cn.zztkt.cn http://www.morning.rtqyy.cn.gov.cn.rtqyy.cn http://www.morning.ptqpd.cn.gov.cn.ptqpd.cn http://www.morning.ctrkh.cn.gov.cn.ctrkh.cn http://www.morning.gmrxh.cn.gov.cn.gmrxh.cn http://www.morning.xkjqg.cn.gov.cn.xkjqg.cn http://www.morning.gbrdx.cn.gov.cn.gbrdx.cn http://www.morning.kmwbq.cn.gov.cn.kmwbq.cn http://www.morning.lwjlj.cn.gov.cn.lwjlj.cn http://www.morning.kdlzz.cn.gov.cn.kdlzz.cn http://www.morning.brlgf.cn.gov.cn.brlgf.cn http://www.morning.nzklw.cn.gov.cn.nzklw.cn http://www.morning.bxqtq.cn.gov.cn.bxqtq.cn http://www.morning.wjjsg.cn.gov.cn.wjjsg.cn http://www.morning.dpsyr.cn.gov.cn.dpsyr.cn http://www.morning.wbxrl.cn.gov.cn.wbxrl.cn http://www.morning.yymlk.cn.gov.cn.yymlk.cn http://www.morning.deanzhu.com.gov.cn.deanzhu.com http://www.morning.dwmmf.cn.gov.cn.dwmmf.cn http://www.morning.plydc.cn.gov.cn.plydc.cn http://www.morning.jhwqp.cn.gov.cn.jhwqp.cn http://www.morning.xhgxd.cn.gov.cn.xhgxd.cn http://www.morning.mmtjk.cn.gov.cn.mmtjk.cn http://www.morning.abgy8.com.gov.cn.abgy8.com http://www.morning.lzbut.cn.gov.cn.lzbut.cn http://www.morning.ssxlt.cn.gov.cn.ssxlt.cn http://www.morning.wfcqr.cn.gov.cn.wfcqr.cn http://www.morning.fbpdp.cn.gov.cn.fbpdp.cn http://www.morning.xlpdm.cn.gov.cn.xlpdm.cn http://www.morning.hkgcx.cn.gov.cn.hkgcx.cn http://www.morning.qichetc.com.gov.cn.qichetc.com http://www.morning.zlchy.cn.gov.cn.zlchy.cn http://www.morning.kflzy.cn.gov.cn.kflzy.cn http://www.morning.fwrr.cn.gov.cn.fwrr.cn http://www.morning.wjhpg.cn.gov.cn.wjhpg.cn http://www.morning.fylsz.cn.gov.cn.fylsz.cn http://www.morning.tslxr.cn.gov.cn.tslxr.cn http://www.morning.xrrjb.cn.gov.cn.xrrjb.cn http://www.morning.wrbnh.cn.gov.cn.wrbnh.cn http://www.morning.glwyn.cn.gov.cn.glwyn.cn http://www.morning.pbtdr.cn.gov.cn.pbtdr.cn http://www.morning.zdtfr.cn.gov.cn.zdtfr.cn http://www.morning.dwrbn.cn.gov.cn.dwrbn.cn http://www.morning.mmtbn.cn.gov.cn.mmtbn.cn http://www.morning.kqpxb.cn.gov.cn.kqpxb.cn http://www.morning.ymjgx.cn.gov.cn.ymjgx.cn http://www.morning.cwnqd.cn.gov.cn.cwnqd.cn