public class BubbleSort {
//冒泡排序
//基本思想:两个数比较大小,较大的数下沉,较小的数冒起来
//过程:1.比较相邻的两个数,如果第二个数小就交换位置
//2.从后向前两两比较,一直到比较最前面的两个数据。最终最小数被交换到起始的位置,
//这样第一个最小数的位置就排好了
//继续重复上述过程,依次将第2,3,...n-1个最小数排好位置
//平均时间复杂度为:O(n^2)
public static void main(String[] args) {
int[] arr = new int[]{6,2,4,1,9,3,6,7,0};
System.out.println("排序前=====");
print(arr);
System.out.println("");
System.out.println("排序后");
long start1 = System.currentTimeMillis();
int[] result = BubbleSort(arr);
long end1 = System.currentTimeMillis();
System.out.println((end1-start1));
print(result);
System.out.println("");
System.out.println("优化后===");
long start2 = System.currentTimeMillis();
int[] result2 = BubbleSort2(arr);
long end2 = System.currentTimeMillis();
System.out.println((end2-start2));
print(result2);
}
public static int[] BubbleSort(int[] arr){
int temp;//临时变量
for(int i=0; i<arr.length-1; i++){
for(int j=arr.length-1; j>i; j--){
if(arr[j]<arr[j-1]){
temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
return arr;
}
//优化:
//针对问题:数据的顺序排好后,冒泡算法仍会继续进行下一轮的比较,直到arr.length-1次,后面的比较都是没意义的。
//解决方案:
//设置标志位flag,如果发生了交换flag设为true,如果没有交换flag设为false
//这样一轮比较结束后,如果flag仍未=为false,即这一轮没有发生交换,说明数据的顺序已经排好了,没有必要再继续进行下去。
public static int[] BubbleSort2(int[] arr){
int temp = 0;
boolean flag = false;
for(int i=0; i<arr.length-1; i++){
for(int j=arr.length-1; j>i; j--){
if(arr[j]<arr[j-1]){
temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
return arr;
}
public static void print(int[] arr){
for(int i=0; i<arr.length; i++){
System.out.print(arr[i]+",");
}
}
}
相关推荐
冒泡排序:应用Java和Python实现冒泡排序算法 冒泡排序:应用Java和Python实现冒泡排序算法 冒泡排序:应用Java和Python实现冒泡排序算法 冒泡排序:应用Java和Python实现冒泡排序算法 冒泡排序:应用Java和Python...
用 Java 实现冒泡排序算法 冒泡排序是一种简单的排序算法,它的基本思想是通过反复比较和交换相邻元素的位置来实现排序。下面是用 Java 实现冒泡排序算法的详细解释: 1. 排序方法 冒泡排序的排序方法是将被排序...
本文将详细探讨标题所提及的几种排序算法:合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合Java语言的实现进行解析。 1. **合并排序(Merge Sort)**: 合并排序是一种基于分治策略的排序算法...
本篇文章将详细讲解标题中提到的六种常见排序算法的Java实现。 1. **冒泡排序**:冒泡排序是最基础的排序算法之一,它通过不断交换相邻的逆序元素来逐渐将较大的元素“浮”到数组的前端。在Java中,冒泡排序的基本...
java排序算法java排序算法插入选择冒泡java排序算法插入选择冒泡
### Java冒泡排序算法知识点详解 #### 一、冒泡排序基本概念 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是...
在提供的文件中,我们可以看到有四种经典的排序算法的Java实现:插入排序、冒泡排序、选择排序以及希尔排序。 **插入排序**: 插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据...
最后,代码还使用了Java内置的`java.util.Arrays.sort(a)`方法对数组进行排序,这是Java提供的快速排序实现,通常比上述的简单排序算法效率更高。 总的来说,这段代码提供了四种排序算法的实现,分别是冒泡排序、...
下面是一个简单的Java冒泡排序实现: ```java public class BubbleSort { public static void bubbleSort(int[] array) { int n = array.length; for (int i = 0; i ; i++) { // 外层循环控制遍历次数 for (int...
本压缩包"常见的七大排序算法Java实现.zip"包含了七种经典的排序算法在Java语言中的实现。尽管文件列表中并未明确列出每种排序算法的名称,但根据常规,这七大排序算法可能包括冒泡排序、插入排序、选择排序、快速...
在JAVA中,实现这两种排序算法可以使用面向对象的特性,创建一个类如`MaopaoKuaisu.java`,在这个类中定义两个方法,分别实现冒泡排序和快速排序。类的结构可能如下: ```java public class MaopaoKuaisu { public...
* 冒泡排序: * 每次在无序队列里将相邻两个数一次进行比较, * 将小数调到前面,逐次比较,直至将最大的数移到 * 最后。将剩下的N-1个数继续比较,将次大数移至 * 倒数第二位。
Java作为一种广泛应用的编程语言,提供了丰富的工具和技术来实现各种排序算法。本资料包包含了一个基于Java的排序算法实现,以及Eclipse工程文件,方便开发者在Eclipse集成开发环境中进行调试和学习。 1. **冒泡...
本文将深入探讨标题"常用排序算法java演示"中涉及的知识点,包括排序算法的原理、Java实现方式以及其在实际应用中的图形演示。 首先,让我们逐一了解几种常见的排序算法: 1. **冒泡排序(Bubble Sort)**:这是一...
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。 走访元素的工作是重复...
Java排序算法实现主要涉及到两种经典的算法:冒泡排序和选择排序。这两种算法都是基于比较的排序方法,适用于小规模或教学目的的数据排序。 **冒泡排序(Bubble Sort)** 是一种简单直观的排序算法,其核心思想是...
以下是一个简单的Java冒泡排序实现: ```java public class BubbleSort { public static void main(String[] args) { int[] array = new int[]{5, 2, 8, 3, 9, 1}; // 待排序的数组 int n = array.length; ...
冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1),是一种原地排序算法。虽然它在最坏情况和平均情况下的效率都不高,但由于其实现简单,常被用于教学和理解排序算法的基本原理。 冒泡排序的主要步骤包括: 1. 比较...