当前位置: 首页 > news >正文

SCAU8639--折半插入排序

8639 折半插入排序

时间限制:1000MS  代码长度限制:10KB
提交次数:1738 通过次数:1371

题型: 编程题   语言: G++;GCC

Description

用函数实现折半插入排序,并输出每趟排序的结果.



 

输入格式

第一行:键盘输入待排序关键的个数n
第二行:输入n个待排序关键字,用空格分隔数据


 

输出格式

每行输出一趟排序结果,数据之间用一个空格分隔


 

输入样例

10
5 4 8 0 9 3 2 6 7 1


 

输出样例

4 5 8 0 9 3 2 6 7 1
4 5 8 0 9 3 2 6 7 1
0 4 5 8 9 3 2 6 7 1
0 4 5 8 9 3 2 6 7 1
0 3 4 5 8 9 2 6 7 1
0 2 3 4 5 8 9 6 7 1
0 2 3 4 5 6 8 9 7 1
0 2 3 4 5 6 7 8 9 1
0 1 2 3 4 5 6 7 8 9
#include <iostream>
#include <vector>
using namespace std;// 折半插入排序函数
void binaryInsertionSort(vector<int>& arr) {int n = arr.size();for (int i = 1; i < n; ++i) {int key = arr[i];int left = 0;int right = i - 1;// 折半查找插入位置while (left <= right) {int mid = (left + right) / 2;if (key < arr[mid])right = mid - 1;elseleft = mid + 1;}// 移动元素给 key 腾位置for (int j = i - 1; j >= left; --j) {arr[j + 1] = arr[j];}arr[left] = key;// 输出当前排序状态for (int k = 0; k < n; ++k) {cout << arr[k];if (k < n - 1) cout << " ";}cout << endl;}
}int main() {int n;cin >> n;vector<int> arr(n);// 读入数组for (int i = 0; i < n; ++i) {cin >> arr[i];}// 调用排序函数binaryInsertionSort(arr);return 0;
}

http://www.xdnf.cn/news/766909.html

相关文章:

  • JS手写代码篇---手写类型判断函数
  • Linux 基础指令入门指南:解锁命令行的实用密码
  • 无他相机:专业摄影,触手可及
  • 【C++高级主题】转换与多个基类
  • 电力系统时间同步系统
  • 玩客云 OEC/OECT 笔记(2) 运行RKNN程序
  • 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录——4. 配置服务器终端环境 zsh , oh my zsh, vim
  • 数智管理学(十六)
  • 需求调研文档——日志文件error监控报警脚本
  • CSS强制div单行显示不换行
  • Qt/C++编写GB28181服务端工具/绿色版开箱即用/对标wvp-gb28181/实时画面预览/录像回放下载
  • 百度golang研发一面面经
  • github 提交失败,连接不上
  • 19-剑侠情缘2-2021端魔改版+虚拟单机搭建+高清大屏+视频教程
  • 高效使用Map的“新”方法
  • 用Python开启游戏开发之旅
  • 修改vscode切换上一个/下一个标签页快捷键
  • SpringBoot高校宿舍信息管理系统小程序
  • Java转义字符
  • PDF 转 HTML5 —— HTML5 填充图形不支持 Even-Odd 奇偶规则?(第一部分)
  • 自主设计一个DDS信号发生器
  • [ Qt ] | 与系统相关的操作(一):鼠标相关事件
  • Go整合Redis2.0发布订阅
  • 通过《哪吒》看人生百态
  • 数据结构与算法:图论——拓扑排序
  • GMDCMonitor企业版功能分享0602
  • Qt OpenGL 实现交互功能(如鼠标、键盘操作)
  • leetcode90.子集II:排序与同层去重的回溯优化策略
  • 【leetcode】459.重复的子字符串
  • MyBatis源码解析:从 Mapper 接口到 SQL 执行的完整链路