发布日期:2026-01-19 浏览次数:
开元棋牌,开元棋牌APP下载,开元棋牌官方网站/开元棋牌[永久网址:363050.com]专注于线上棋牌游戏开发与运营。开元棋牌提供多种经典和创新的棋牌游戏,包括电子游戏、捕鱼、欧洲杯投注、斗地主、麻将、德州扑克等。开元,开元棋牌,开元体育,开元棋牌入口,开元APP下载,开元棋牌官网入口,开元棋牌官方网站,开元官方网站,开元棋牌APP下载开元棋牌APP下载,以高质量的游戏画面和流畅的操作为用户带来优越的游戏感受。
局 部 冒 泡 排 序 与 冒 泡 排 序 算 法 具 有 相 同 的 时 间 复 杂 度 ,并 且 在 正 序 和 逆 序 的 情 况 下 , 所需的关键字的比较次数和移动次数完全相同。由于局部冒泡排序和冒泡排序的数 据移动次数总是相同的,而局部冒泡排序所需关键字的比较次数常少于冒泡排序, 这意味着局部冒泡排序很可能在平均比较次数上对冒泡排序有所改进,当比较次数 较少的优点不足以抵消其程序复杂度所带来的额外开销,而当数据量较大时,局部 冒泡排序的时间性能则明显优于冒泡排序。
局部冒泡排序算法对冒泡排序的改进: 在冒泡排序中,一趟扫描有可能无数据交换,也有可能有一次或多次数据交换,在 传统的冒泡排序算法及近年来的一些改进的算法中,只记录一趟扫描有无数据交换 的信息,对数据交换发生的位置信息则不予处理。为了充分利用这一信息,可以在 一 趟 全 局 扫 描 中 ,对 每 一 反 序 数 据 对 进 行 局 部 冒 泡 排 序 处 理 ,称 之 为 局 部 冒 泡 排 序 。
在第二趟:仍从第一对数开始比较(因为可能由于第 2 个数和第 3 个数的交换,使 得第 1 个数不再小于第 2 个数),将小数放前,大数放后,一直比较到倒数第二个 数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一 个新的最大数(其实在整个数列中是第二大的数)。
如 此 下 去 ,重 复 以 上 过 程 ,直 至 最 终 完 成 排 序 。由 于 在 排 序 过 程 中 总 是 小 数 往 前 放 , 大数往后放,相当于气泡往上升,所以称作冒泡排序。 用二重循环实现,外循环变量设为 i,内循环变量设为 j。外循环重复 9 次,内循环 依次重复 9,8,…,1 次。每次进行比较的两个元素都是与内循环 j 有关的,它们 可 以 分别 用 a[j]和 a[j1]标 识 , i 的 值 依次 为 1,2,…,9, 对 于每 一 个 i,j 的 值 依次 为 1,2,…10-i。 在许多程序设计中,我们需要将一个数列进行排序,以方便统计,而冒泡排序一直 由于其简洁的思想方法而倍受青睐。 设 想 被 排 序 的 数 组 R[1..N]垂 直 竖 立 ,将 每 个 数 据 元 素 看 作 有 重 量 的 气 泡 ,根 据 轻 气 泡 不 能 在 重 气 泡 之 下 的 原 则 ,从 下 往 上 扫 描 数 组 R,凡 扫 描 到 违 反 本 原 则 的 轻 气 泡 , 就 使 其 向 上 ”漂 浮 ”, 如 此 反 复 进 行 , 直 至 最 后 任 何 两 个 气 泡 都 是 轻 者 在 上 , 重 者 在 下为止。 若 记 录 序 列 的 初 始 状 态 为 ”正 序 ”, 则 冒 泡 排 序 过 程 只 需 进 行 一 趟 排 序 , 在 排 序 过 程 中只需进行 n-1 次比较,且不移动记录;反之,若记录序列的初始状态为”逆序”, 则 需 进行 n(n-1) /2 次 比 较和 记 录 移 动 。因 此 冒 泡 排 序总 的 时 间 复 杂度 为 O(n*n)。 冒泡排序法存在的不足及改进方法: 第一,在排序过程中,执行完最后的排序后,虽然数据已全部排序完备,但程序无 法判断是否完成排序,为了解决这一不足,可设置一个标志单元 flag,将其设置为 OFF, 表 示 被 排 序 的 表 示 是 一 个 无 序 的 表 。 在 每 一 排 序 开 始 时 , 检 查 此 标 志 , 若 此 标志为 0,则结束排序;否则进行排序; 第二,当排序的数据比较多时排序的时间会明显延长。改进方法:快速排序:具体 做法:任意选取某一记录(通常取第一个记录),比较其关键字与所有记录的关键 字,并将关键字比它小的记录全部放在它的前面,将比它大的记录均存放在它的后 面,这样,经过一次排序之后,可将所有记录以该记录所在的分界点分为两部分, 然后分别对这两部分进行快速排序,直至排序完
依次比较相邻的两个数,将小数放在前面,大数放在后面。 即在第一趟:首先比较第 1 个和第 2 个数,将小数放前,大数放后。然后比较第 2 个数和第 3 个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小 数放前,大数放后。至此第一趟结束,将最大的数放到了最后。