Java数据结构与算法分析——冒泡排序


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

原理分析

现存在一个无序数组{1,9,7,5,3},请利用冒泡排序将数组按照从小到大(从大到小)排序。

第一趟:一共五个数,比较了4回,流程如下:
1和9比,9大,不变换位置,所以还是 1,9,7,5,3
9和7比,9大,需要变换位置,9和7对调 1,7,9,5,3
9和5比,9大,需要变换位置,9和5对调 1,7,5,9,3
9和3比,9大,需要变换位置,9和3对调 1,7,5,3,9

第二趟: 1,7,5,3,9 比较了3回,流程如下:
1和7比,7大,不需要变换位置, 所以还是 1,7,5,3,9
7和5比,7大,需要变换位置 ,所以变成 1,5,7,3,9
7和3比,7大,需要变换位置 ,所以变成 1,5,3,7,9

第三趟:1,5,3,7,9 比较了2回,流程如下:
1和5比 ,5大,不需要变换位置, 所以还是 1,5,3,7,9
5和3比, 5大 ,需要变换位置 , 变成 1,3,5,7,9

第四趟:1,3,5,7,9 比较了1回,流程如下:
1和3比 , 3 大 ,不需要变换位置, 所以还是1,3,5,7,9

小结:

  • 1、 数组中5个数,比较了5-1=4趟
  • 2、每一趟比较了几次呢?第几趟+在该趟中比较的回数=数组中元素的个数
  • 3、每一趟比较,比较出一个最大值,放到最后面
  • 4 、每一回的比较中两个数两两进行比较,可能需要对调位置

代码实现

冒泡排序的代码实现如下:

package com.algorithm;
/**
 * 本文作者:谷哥的小弟 
 * 博客地址:http://blog.csdn.net/lfdfhl
 */
public class BubbleSort {
    
    

	public static void main(String[] args) {
    
    
		int[] intArray = {
    
    11, 99, 77, 5, 0, -1};
		printArray(intArray);
		System.out.println();
		bubble(intArray);
	}

	public static void bubble(int[] intArray) {
    
    
		for (int i = 0; i < intArray.length - 1; i++) {
    
    
			for (int j = 0; j < intArray.length - 1 - i; j++) {
    
    
				if (intArray[j] > intArray[j + 1]) {
    
    
					swap(intArray, j, j + 1);
				}
			}
		}
		printArray(intArray);
	}
	
	//打印数组
	public static void printArray(int[] intArray) {
    
    
		for (int i = 0; i < intArray.length; i++) {
    
    
			System.out.print(intArray[i] + " ");
		}
	}
	
	//交换数组中的元素
	public static void swap(int[] intArray, int i, int j) {
    
    
		int temp = 0;
		temp = intArray[i];
		intArray[i] = intArray[j];
		intArray[j] = temp;
	}

}

运行结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lfdfhl/article/details/109320033