`

优化的冒泡排序

 
阅读更多
	static int [] arr = new int []{ 4, 2, 3, 6,99, 5 ,56,23,41};
	public static void main(String[] args) {
		show(order1());

	}
	
	public static int[] order1(){
		int count = 0;
		boolean a = false;
		int temp = 0;
		for (int i = 0;i<arr.length-1;i++) {
			a = true;
			for (int j = 0; j < arr.length-i-1; j++) {
				count++;
				if(arr[j] > arr[j+1]){
					temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
					a = false;
				}
			}
			if(a){
				break;
			}
		}
		System.out.println(count);
		return arr;
	}
	
       //方向搜索,从数组的最后开始搜索到最前面
	public static int[] order1(){
		int count = 0;
		int temp = 0;
		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-1];
					arr[j-1] = arr[j];
					arr[j] = temp;
				}
			}
		}
		System.out.println(count);
		return arr;
	}
	public static void show(int [] arr){
		System.out.println(Arrays.toString(arr));
	}

    冒泡排序的思路:每次排序都找出数组当中最大的数(忽略已经找到的)然后放到数组最后面。可以加一个标志位来判断是是否已经完全拍好序了,以避免做无用功。可以看count的输出来判断是否增加了效率。

分享到:
评论

相关推荐

    优化冒泡排序和选择排序

    博客文章"优化冒泡排序和选择排序"详细地介绍了这两种排序算法的实现以及它们的优化策略。通过对原始算法的分析和改进,我们可以更好地理解和应用这些排序方法,并在实际编程中根据数据特性选择合适的排序算法,以...

    基于C语言的优化冒泡排序核心代码

    ### 基于C语言的优化冒泡排序核心代码解析 #### 一、冒泡排序简介 冒泡排序是一种简单的排序算法,它重复地遍历要排序的元素列,依次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。遍历元素的工作是...

    冒泡排序优化算法_C语言_冒泡排序法_优化算法_

    为了优化冒泡排序,我们可以引入两个关键策略:设置标志位和添加提前结束条件。 1. 设置标志位:在每一轮遍历结束后,如果没有发生过交换,说明序列已经有序,可以提前结束排序。我们可以在外层循环中添加一个布尔...

    C++实现优化冒泡排序、首/尾点快速排序、大顶堆排序

    C++实现优化冒泡排序、首/尾点快速排序、大顶堆排序,包含main函数,快速排序中需要手动输入排序元素数量和元素

    基于C++冒泡排序法

    4. **标志位**:为了优化冒泡排序,可以在每一轮遍历结束后设置一个标志位,如果在一轮遍历中没有发生过交换,说明数组已经是有序的,可以提前结束排序。 5. **代码实现**:以下是一个简单的C++冒泡排序示例: ```...

    java 冒泡排序 数组冒泡排序

    ### 优化冒泡排序 尽管冒泡排序的效率相对较低,但可以通过一些策略来提高性能。例如,添加一个`boolean`标志`swapped`,在每次内层循环结束后检查是否发生过交换。如果没有交换,说明数组已经排序,可以提前结束...

    php 冒泡排序算法 优化版本

    #### 三、优化冒泡排序:引入标志位 为了提高冒泡排序的效率,我们可以添加一个标志位(flag)来记录在某一次遍历过程中是否发生了元素交换。如果在整个遍历过程中都没有发生任何交换,则可以提前结束排序过程,因为...

    冒泡排序的优化写法

    在优化冒泡排序的过程中,主要考虑两种策略:第一种是添加一个标志位,用于检查在某次遍历时是否发生了任何交换。如果没有发生交换,那么说明序列已经有序,无需进行后续的遍历。第二种策略是记录最后一次交换的位置...

    VisualBasic程序设计 形考任务二实验3冒泡排序程序.zip

    6. **优化冒泡排序**:为了提高效率,可以在内层循环中添加一个标志变量`swapped`,如果某轮遍历没有发生交换,说明序列已经有序,可以提前结束排序。 7. **输出结果**:排序完成后,可以通过消息框`MsgBox`或者...

    冒泡排序法的面试简历题目

    **优化冒泡排序:** - 设置一个标志位,用于记录在某一次遍历中是否发生了交换。如果没有发生交换,说明序列已经有序,可以提前结束排序,这被称为“早停”策略,能有效减少不必要的比较。 - 可以引入一个变量,记录...

    易语言冒泡排序算法

    5. **标志位**:为了优化冒泡排序,我们可以设置一个标志位,记录在一次遍历中是否发生了交换。如果没有交换,说明数组已经是有序的,可以提前结束排序。 6. **实现过程**:在易语言中,可以创建一个新的程序,定义...

    冒泡排序——C++代码

    4. **优化冒泡排序**: - 除了基本的冒泡排序,还可以通过优化减少不必要的比较。例如,当一轮没有发生交换时,可以提前结束排序,这被称为“早退优化”。 - 另一种优化是“逆序检测”,如果在某轮排序中发现数组...

    冒泡排序程序(面试必用)

    - 如何优化冒泡排序,例如使用标志位记录是否发生过交换,若未发生交换则提前结束排序。 - 冒泡排序在实际应用中的局限性及适用场景。 - 如何分析冒泡排序的时间复杂度和空间复杂度。 通过学习和理解冒泡排序,我们...

    c语言数组冒泡排序

    ### 优化冒泡排序 - **设置标志位**:如果在一次遍历过程中没有发生任何交换,说明数组已经有序,可以提前结束排序。 - **双方向冒泡**:改进冒泡排序,同时从两端向中间冒泡,以提高效率。 以上就是关于C语言实现...

    C# jQuery冒泡排序分析和理解(初级和基础)

    冒泡排序是一种基础的排序算法,它通过重复遍历待排序的序列,比较相邻元素并交换位置,使得每...在实际开发中,还可以考虑优化冒泡排序算法,如添加标志位来检测数组是否已排序,以及采用双向冒泡排序等方法提高效率。

    冒泡排序演示程序

    5. **结束条件**:为了优化冒泡排序,我们可以添加一个标志位,记录在某一轮中是否进行了交换。如果没有交换,说明数组已经排序完成,可以提前结束排序。 以下是一个简单的C++冒泡排序实现示例: ```cpp #include ...

    这是用Java编写的冒泡排序的方法

    然而,可以通过添加一个标志位来检查是否进行了交换,如果某一轮没有发生交换,说明数组已经有序,可以提前结束排序,这被称为优化版的冒泡排序。 ### 应用场景 尽管冒泡排序效率不高,但在教学和理解排序算法的...

    用java写的一个冒泡排序器

    在Java编程中,我们还可以优化冒泡排序,例如引入一个布尔变量`swapped`来跟踪每次迭代是否进行了交换。如果没有交换,说明序列已经有序,可以提前结束排序过程,这样可以在部分有序的数组中提高效率。这是一个优化...

    C#实现冒泡排序实例

    4. **优化冒泡排序**: 由于冒泡排序在每一轮中都可能提前完成(如果在一轮内没有发生任何交换,说明数组已经排序好),所以我们可以添加一个标志位来检查这种情况,避免不必要的比较。 ```csharp bool swapped; for...

Global site tag (gtag.js) - Google Analytics