交换排序——冒泡排序
来源:互联网 发布:集成水槽的实用吗 知乎 编辑:程序博客网 时间:2024/06/04 18:52
冒泡排序是一种广为人知的排序算法,因为它相对于前面介绍的选择排序来说效率有所提升,而且实现简单。最好情况下只需要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
- 交换排序——冒泡排序
- 交换排序——冒泡排序
- 6.交换排序——冒泡排序
- 交换类排序——冒泡排序
- 交换排序——冒泡排序
- 交换排序——冒泡排序
- 交换排序——冒泡排序
- 交换排序——冒泡排序
- 交换排序——冒泡排序
- 排序算法之交换排序——冒泡排序
- 排序:交换排序——冒泡排序法
- 排序——交换排序之冒泡排序
- 交换排序(冒泡排序—改进、快速排序)
- 交换排序:冒泡排序
- 交换排序-冒泡排序
- 交换排序-冒泡排序
- 交换排序-冒泡排序
- 冒泡排序-交换排序
- Android ListView数据显示
- 简单几步搭建个人博客(WordPress)
- 文件拖放显示信息
- [ java ] JDBC深入!
- 初学SqlServer,总结一些注意事项
- 交换排序——冒泡排序
- Unofficial Windows Binaries for Python Extension Packages
- 网易-小车直流电机H桥驱动方案的选择
- Android SQLite 事物操作
- wpf中关于图形转换的几个基本用法
- OCJP(1Z0-851) 模拟题分析(九)
- 解析 Qt 程序在Windows 下发布
- wpf中KeyFrame用法初学
- Android 实现Windows风格的Dialog