交换排序——冒泡排序
发布日期:2021-09-28 18:46:39 浏览次数:9 分类:技术文章

本文共 1198 字,大约阅读时间需要 3 分钟。

    冒泡排序是一种广为人知的排序算法,因为它相对于前面介绍的选择排序来说效率有所提升,而且实现简单。最好情况下只需要1次比较,最差需要(n-1)次比较。

    实现思路就是不停的使数组中相邻的左右两个元素对比大小,将大的元素往右挪。因为是左右互换,所以每轮比较下来后方的元素均以排序,所以可以提供了可以提前结束排序的机会。

    

package com.h3c.paixu;public class 冒泡排序Demo {	static boolean changeFlag = false;	public static void main(String[] args) {		// 1. 初始化一个无序数组		int[] myArr = { 23, 35, 73, 27, 4, 77, 54, 84, 47, 56, 34, 32, 75, 32,				31, 0, 99, 7, 54, 57 };		for (int k = myArr.length; k > 0; k--) {			changeFlag = false;			myArr = 冒泡排序(k, myArr);						if (!changeFlag) {// 如果没有挪位,证明已经排序完成				return;			}			for (int i : myArr) {				System.out.print(i + " ");			}			System.out.println("");		}	}	private static int[] 冒泡排序(int endIndex, int[] myArr) {		int tempValue = 0;		for (int n = 0; n < endIndex; n++) {			if ((n + 1) < myArr.length && myArr[n] > myArr[n + 1]) {				tempValue = myArr[n];				myArr[n] = myArr[n + 1];				myArr[n + 1] = tempValue;				changeFlag = true;			}		}		return myArr;	}}
    冒泡排序时间效率是不确定的,空间效率是O(1),并且冒泡排序是稳定排序。这里科普一下什么叫稳定排序:

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
    说白了,就是数组中有俩相同的元素,如果俩元素位置在排序后有变化就是不稳定排序,如果没变化就是稳定排序。如

    5   3    6    2   3*    7

   稳定排序:2   3   3*   5   6   7

   不稳定排序:2   3*   3   5   6   7

转载地址:https://blog.csdn.net/h3c4lenovo/article/details/8578922 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:选择排序——快速排序
下一篇:选择排序——堆排序

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月02日 17时14分33秒