Java数据结构及算法实例:冒泡排序 Bubble Sort
冒泡排序概念
冒泡排序算法是通过不断地比较相邻两个元素,把较大的元素交换到后面,较小的元素交换到前面,以此类推,直到整个数组有序的排序算法。
冒泡排序基本思路
冒泡排序的基本思路是不断地比较相邻的元素,如果前面的元素比后面的元素大,则交换这两个元素。这样,每一次都可以将最大的元素“浮”到最后面。由于每一次只能确定一个元素的位置,因此需要对n个元素进行(n-1)轮比较。
冒泡排序算法实现(Java代码)
以下是Java语言实现冒泡排序的示例代码:
public class BubbleSort {
public static void bubbleSort(int[] arr) {
int len = arr.length;
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换位置
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
}
以上代码中,主要有两个for循环,分别是外层的循环和内层的循环。其中,外层的循环次数为(n-1)次,因为冒泡排序需要对n个元素进行(n-1)轮比较。内层的循环次数则为(len-i-1)次,因为在每轮比较中,已经有i个元素已经排序完成。
冒泡排序算法的时间复杂度
冒泡排序的时间复杂度是O(n²),其中n是待排序元素的个数。虽然冒泡排序的时间复杂度较高,但在某些情况下,冒泡排序也是一种快速且简单的排序算法。
冒泡排序算法的示例说明
以下是Java语言实现冒泡排序的示例说明:
示例一
假设有一个整数数组a[], a[] = {3, 1, 2, 7, 4, 5, 9, 6, 8}。
首先,进行第一轮的比较,结果是:{1, 2, 3, 4, 5, 7, 6, 8, 9}。
接着,进行第二轮的比较,结果是:{1, 2, 3, 4, 5, 6, 7, 8, 9}。
示例二
假设有一个整数数组a[], a[] = {9, 8, 7, 6, 5, 4, 3, 2, 1}。
进行第一轮的比较,结果是:{8, 7, 6, 5, 4, 3, 2, 1, 9}。
接着,进行第二轮的比较,结果是:{7, 6, 5, 4, 3, 2, 1, 8, 9}。
...继续进行下去,最终结果是:{1, 2, 3, 4, 5, 6, 7, 8, 9}。
通过以上两个示例,我们可以看出,冒泡排序的时间复杂度是O(n²),因此对于较大的数据集,冒泡排序并不是一个非常高效的算法。但是,在某些情况下,冒泡排序仍然是一种非常方便和容易实现的排序算法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java数据结构及算法实例:冒泡排序 Bubble Sort - Python技术站