交换排序——冒泡排序
说白了,就是数组中有俩相同的元素,如果俩元素位置在排序后有变化就是不稳定排序,如果没变化就是稳定排序。如
发布日期: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秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Android从触碰屏幕开始的事件采集,解析及分发(1)
2019-04-26
福利来袭,免费获取 Android 开发资料以及直播课程
2019-04-26
优势丧失
2019-04-26
【上市啦】“Python 之父” 力荐的蓝皮书,你知道是哪本吗?
2019-04-26
Python 爬虫面试题 170 道:2019 版
2019-04-26
歪门邪道
2019-04-26
【家务】盘点小孩玩具零件缺失情况
2019-04-26
开发中文 API 的一些策略
2019-04-26
从日本编程书籍《我的第一本编程书》中译版看中文例程如何扬长避短——标识符(一)
2019-04-26
中文命名标识符如何区分类型和变量
2019-04-26
编程术语成系统中文化的意义
2019-04-26
草蟒 Python 中文 API 与 IDE 支持尝鲜
2019-04-26
一种改进中文 API 可读性的方法:参数不限于在末尾
2019-04-26
程序员面试时用中文命名写白板代码的好处
2019-04-26
1992年日本对母语编程的可读性比较实验
2019-04-26
[转] 用python编写控制网络设备的自动化脚本3:启动
2019-04-26
扩展Python控制台实现中文反馈信息
2019-04-26
扩展Python控制台实现中文反馈信息之二-正则替换
2019-04-26
在PyPI测试平台发布Python包
2019-04-26
中文代码示例之Electron桌面应用开发初体验
2019-04-26