三种基本排序-冒泡,选择,二分

闲话不多说,直接上代码,简明易懂,条理清晰,交互性强,尽善尽美

码住,建议copy下来:

先上二分法吧,稍复杂点的,代码多一些,用了函数调用

二分排序:

#include <iostream>
using namespace std;// 二分法查找插入位置
int binarysearch(int arr[], int low, int high, int key) {if (high <= low)return (key > arr[low]) ? (low + 1) : low;int mid = (low + high) / 2;if (key == arr[mid])return mid + 1;if (key > arr[mid])return binarysearch(arr, mid + 1, high, key);return binarysearch(arr, low, mid - 1, key);
}// 二分法插入排序
void binary(int arr[], int n) {int i, loc, j, selected;for (i = 1; i < n; ++i) {j = i - 1;selected = arr[i];// 查找插入位置loc = binarysearch(arr, 0, j, selected);// 移动元素以便插入while (j >= loc) {arr[j + 1] = arr[j];j--;}arr[j + 1] = selected;}
}int main() {int i, num;cout << "输入你要排序的数字数量(100以内):\n";cin >> num;int a[100] = {0};cout << "好的,现在我们将为" << num << "个数字排序,请逐个输入:\n";for (i = 0; i < num; i++) {cin >> a[i];}binary(a, num);cout << "排序后的结果为:\n";for (i = 0; i < num; i++) {cout << a[i] << " ";}cout << endl;return 0;
}

 选择排序:

#include<iostream>
using namespace std;
int main()
{  //首先定义数组,循环输入数字int i,j,t,num;int a[100]={0};         //定义变量cout<<"输入你要为多少个数字排序(100以内):\n";cin>>num;               //个数限定cout<<"好的,我们如今将为"<<num<<"个数字排序,请依次输入:\n";for(i=0;i<num;i++){cin>>a[i];          //循环输入}for(i=0;i<num;i++){for(j=i+1;j<num;j++){if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}}                       //每次决出第一个数for(i=0;i<num;i++)cout<<a[i]<<"  ";   //循环输出return 0;
}

冒泡排序:

#include<iostream>
using namespace std;
int main()
{int i,j,t,num;int a[100]={0};         //定义变量cout<<"输入你要为多少个数字排序(100以内):\n";cin>>num;               //个数限定cout<<"好的,我们如今将为"<<num<<"个数字排序,请依次输入:\n";for(i=0;i<num;i++){cin>>a[i];          //循环输入}for(j=1;j<num;j++){for(i=0;i<num-j;i++){     //反复修正第二个条件if(a[i]>a[i+1]){      //谨防此处越界t=a[i];a[i]=a[i+1];a[i+1]=t;}}}                       //冒泡实现,我是先写内循环,再外循环修整for(i=0;i<num;i++)cout<<a[i]<<"  ";   //循环输出return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/836850.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】命名空间、缺省参数、函数重载、引用

文章目录 1.认识命名空间2.命名空间的使用3.C的输入和输出4.缺省参数4.1缺省参数的概念4.2缺省参数的分类 5.函数重载6.引用6.1引用的概念6.2引用的特性6.3常引用(重点题目)6.4引用和指针的区别 1.认识命名空间 C总计63个关键字&#xff0c;C语言32个关键字 下面让我们学习一…

周进院长受邀出席2024第四届屈光手术国际论坛获多项荣誉称号!

周进院长受邀出席2024第四届屈光手术国际论坛获“全国首批EVOICL&#xff08;V5&#xff09;新技术临床应用专家”等多项荣誉称号&#xff01; 5月10-12日&#xff0c;由爱尔眼科医院集团主办、长沙爱尔眼科医院协办的2024第四届屈光手术国际论坛&#xff08;IRSS 2024&#x…

618洗地机怎么选?热门洗地机选购指南,拒绝踩雷

洗地机是一种智能化的清洁工具&#xff0c;具有超强的清洁能力&#xff0c;能轻松应对各种地面污渍&#xff0c;无论是干污还是湿污。其一键操作设计简便易上手&#xff0c;省去了传统清洁方式的繁琐步骤&#xff0c;节省了时间和精力。高端型号更配备智能感应功能&#xff0c;…

2024/5/13 SpringBoot配置多个RabbitMQ

目录 一、单个RabbitMQ配置 1.1、导入Maven坐标 1.2、yaml配置 1.3、java配置类 1.3.1、交换机配置 1.3.2、队列配置 1.3.3、绑定配置 1.3.4、连接配置 1.4、生产者与消费者操作配置 1.4.1、生产者操作配置 1.4.2、消费者操作配置 二、多个RabbitMQ配置 2.1、yaml配置 2.2、j…

【漏洞复现】瑞友天翼应用虚拟化系统 appsave SQL注入漏洞

0x01 产品简介 N/A 0x02 漏洞概述 瑞友天翼应用虚拟化系统 appsave接口存在SQL注入漏洞,未授权的攻击者可以通过该漏洞执行任意sql语句。 0x03 测绘语句 fofa: body="瑞友天翼 - 应用虚拟化系统" 0x04 漏洞复现 1、执行sql语句:http://xxxx/hmrao.php?s=/Ad…

ARP中间人

文章目录 ARP中间人ARP协议介绍使用kali进行ARP毒化使用kali进行ARP中间人使用kali进行ARP钓鱼ARP攻击防御ARP总结 ARP中间人 ARP协议介绍 维基百科ARP介绍 ARP&#xff08;地址解析协议&#xff09;在网络通信中扮演着至关重要的角色&#xff0c;它通过将网络层地址&#x…

吴恩达机器学习笔记:第 10 周-17大规模机器学习(Large Scale Machine Learning)17.1-17.2

目录 第 10 周 17、 大规模机器学习(Large Scale Machine Learning)17.1 大型数据集的学习17.2 随机梯度下降法 第 10 周 17、 大规模机器学习(Large Scale Machine Learning) 17.1 大型数据集的学习 如果我们有一个低方差的模型&#xff0c;增加数据集的规模可以帮助你获得更…

大模型LLM 结合联网搜索增强isou

参考&#xff1a; https://isou.chat/ https://github.com/yokingma/search_with_ai 安装github下载&#xff0c;运行docker compose 如果一直报下面错误&#xff1a; 解决方法https://github.com/yokingma/search_with_ai/pull/7 默认打开&#xff1a; http://192.16***…

系统网络基础知识介绍

1.路由 路由是指从原地址到目的地时&#xff0c;决定端到端路径的网络范围的进程&#xff0c;是工程术语。路由工作在OSI参考模型的第三层&#xff08;网络层&#xff09;&#xff0c;是数据包转发设备。12 路由是把数据从一个网络转发到另一个网络的过程&#xff0c;这个…

教练预约管理小程序开发源码现成案例(小程序、APP、H5圆源码搭建)

随着人们对身体健康越来越重视&#xff0c;对强身健体、健康个性化生活的需求日益增加&#xff0c;健身已成为时尚生活的标志。 然而&#xff0c;没有时间去健身房却成了很多上班族的痛点。健身房作为一项既能缓解工作压力又能缓解学业压力的运动&#xff0c;正好满足了当代人…

每日OJ题_贪心算法四⑦_力扣1054. 距离相等的条形码

目录 力扣1054. 距离相等的条形码 解析代码 力扣1054. 距离相等的条形码 1054. 距离相等的条形码 难度 中等 在一个仓库里&#xff0c;有一排条形码&#xff0c;其中第 i 个条形码为 barcodes[i]。 请你重新排列这些条形码&#xff0c;使其中任意两个相邻的条形码不能相等…

绝地求生PUBG初版艾伦格回归 初版艾伦格和新版有什么区别

PUBG终于迎来了经典的旧版艾伦格地图的回归&#xff01;我们希望通过本次经典艾伦格的回归为大家带回记忆中那一幕幕熟悉的场景&#xff0c;并让大家好好回味一番当年与好友们共同冒险的峥嵘岁月&#xff01;还怀念从前为了抢到自己最爱的武器而飞奔的日日夜夜吗&#xff1f;那…

如何对公司的重要文件进行保护以防止被误删或恶意删除呢?

企业数据是宝贵的资产&#xff0c;尤其是那些涉及核心竞争力和客户隐私的重要文件&#xff0c;一旦丢失或被恶意删除&#xff0c;可能会给企业带来不可估量的损失。 因此&#xff0c;如何对公司的重要文件进行保护以防止被误删或恶意删除&#xff0c;是每个企业都需要认真考虑的…

Java 常见的垃圾回收算法以及它们的优缺点(总结版)

在Java中&#xff0c;常见的垃圾回收&#xff08;Garbage Collection, GC&#xff09;算法主要有以下几种&#xff0c;每种都有其独特的优缺点&#xff1a; 引用计数算法&#xff08;Reference Counting&#xff09; 优点&#xff1a;实现简单&#xff0c;执行效率高&#xff0…

使用非官网购买Chatgpt的api调用

测试代码 from openai import OpenAI client OpenAI(api_key用户密钥) import json import os import timeclass ChatGPT:def __init__(self, user):self.user userself.messages [{"role": "system", "content": "Agent"}]def as…

【算法基础】简单的动态规划!你没见过的全新视角!

文章目录 动态规划导论使用动态规划加速斐波那契数列&#xff08;记忆化&#xff09;自底向上的动态规划经典的动态规划问题 动态规划导论 动态规划的关键是避免重复的计算。通常情况下&#xff0c;动态规划算法解决的问题可以用递归的方法解决。可以先尝试将问题写出最朴素的…

js图片回显的方法

直接上代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body>// HTML部分<input type"file" id"fileInput"><button onclick"show…

SSH常用功能介绍-高级功能

一、介绍 SSH&#xff08;Secure Shell&#xff09;是一种用于远程登录和执行命令的网络协议&#xff0c;它提供了加密的连接&#xff0c;保证了数据的安全性。除了基本的远程登录功能外&#xff0c;SSH还提供了许多高级功能&#xff0c;以下是一些常用的高级功能介绍&#xf…

神经网络笔记:感知机+激活函数+全连接神经网络简介

神经网络 单层神经网络 感知机模型 激活函数输出 感知机 MP模型 激活函数 把神经网络模型线性输出变为非线性输出 常用激活函数 sigmoid sigmoid(x) 1 / (1 exp(-x))适用于预测概率作为输出的模型优点 把输入值压缩到0-1之间物理意义上最接近生物神经元 缺点 存在梯…

OpenBayes 一周速览|SegmentAnything 分割万物教程上新、MiniGemini 多模态模型天花板一键 input

公共资源速递 This Weekly Snapshots &#xff01; 5 个数据集&#xff1a; * SAOKE 人工标注数据集 * AG News 新闻文章数据集 * VQA-HAT 智能问答数据集 * EQA 问答数据集 * HotpotQA 问答数据集 1 个模型&#xff1a; * MiniGemini-34B-HD 2 个教程&#xff1a; …