//编写人:naruuu
//编写功能:排序算法的实现
//编写时间:12 11
#include <stdio.h>
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
#define N 1000
int arr[N];
/* 对长度为n的数组arr执行冒泡、插入、选择排序 */
void bubbleSort(int arr[], int n);
void insertionSort(int arr[], int n);
void selectionSort(int arr[], int n);
/* 打印长度为n的数组arr */
void printArray(int arr[], int n);
void swap(int *xp, int *yp) {
int temp = *xp;
*xp = *yp;
*yp = temp;
}
int main() {
int n, i,a[N];
cout<<"请输入要排序的数组的长度:"<<endl;
cin >> n;
cout << "请输入要排序的数组:" << endl;
for (i = 0; i < n; ++i) {
cin >> arr[i];
}
for(i=0;i<n;i++)a[i]=arr[i];
bubbleSort(a, n);
for(i=0;i<n;i++)a[i]=arr[i];
insertionSort(a,n);
for(i=0;i<n;i++)a[i]=arr[i];
selectionSort(a,n);
//printArray(arr, n);
return 0;
}
/* 打印长度为n的数组arr */
void printArray(int arr[], int n) {
int i;
for (i = 0; i < n; i++) {
cout << arr[i];
if (i < n - 1) /* 下标0..n-2每个元素后面有个空格 */
cout << " "; /*下标n-1,也就是最后一个元素后面没有空格*/
}
cout << endl; /* 一行打印完后换行 */
}
void insertionSort(int arr[], int n){
int i,j,t;
int tang=0;
printf("插入排序:\n");
for(i=1;i<n;i++){ //arr[i]插入到前面的有序序列中
if(arr[i]<arr[i-1])
{
t=arr[i];
arr[i]=arr[i-1];
for(j=i-2;j>=0;j--)
{
if(t<arr[j]) arr[j+1]=arr[j];
else break;
}
arr[j+1]=t;
}
cout << "第" << ++tang << "趟:";
printArray(arr,n);
}
}
void selectionSort(int arr[], int n){
int i,j,t,x;
int tang=0;
cout << "选择排序" << endl;
for(i=n-1;i>=1;i--){
t=0;
for(j=1;j<=i;j++){
if(arr[t]<arr[j]) t=j;
}
x=arr[t];
arr[t]=arr[i];
arr[i]=x;
cout << "第" << ++tang << "趟:";
printArray(arr,n);
}
}
void bubbleSort(int arr[], int n){
int i,j;
int tang=0;
cout << "冒泡排序" << endl;
for(j=n-1;j>=1;j--){
for(i=0;i<j;i++){
if(arr[i]>arr[i+1]){
int t=arr[i];arr[i]=arr[i+1];arr[i+1]=t;
}
}
cout << "第"<< ++tang<< "趟:";
printArray(arr,n);
}
}
/*测试结果:
/*
输入样例:
10
1 19 9 11 4 3 5 8 10 6
输出样例:
请输入要排序的数组的长度:
10
请输入要排序的数组:
1 19 9 11 4 3 5 8 10 6
冒泡排序
第1趟:1 9 11 4 3 5 8 10 6 19
第2趟:1 9 4 3 5 8 10 6 11 19
第3趟:1 4 3 5 8 9 6 10 11 19
第4趟:1 3 4 5 8 6 9 10 11 19
第5趟:1 3 4 5 6 8 9 10 11 19
第6趟:1 3 4 5 6 8 9 10 11 19
第7趟:1 3 4 5 6 8 9 10 11 19
第8趟:1 3 4 5 6 8 9 10 11 19
第9趟:1 3 4 5 6 8 9 10 11 19
插入排序:
第1趟:1 19 9 11 4 3 5 8 10 6
第2趟:1 9 19 11 4 3 5 8 10 6
第3趟:1 9 11 19 4 3 5 8 10 6
第4趟:1 4 9 11 19 3 5 8 10 6
第5趟:1 3 4 9 11 19 5 8 10 6
第6趟:1 3 4 5 9 11 19 8 10 6
第7趟:1 3 4 5 8 9 11 19 10 6
第8趟:1 3 4 5 8 9 10 11 19 6
第9趟:1 3 4 5 6 8 9 10 11 19
选择排序
第1趟:1 6 9 11 4 3 5 8 10 19
第2趟:1 6 9 10 4 3 5 8 11 19
第3趟:1 6 9 8 4 3 5 10 11 19
第4趟:1 6 5 8 4 3 9 10 11 19
第5趟:1 6 5 3 4 8 9 10 11 19
第6趟:1 4 5 3 6 8 9 10 11 19
第7趟:1 4 3 5 6 8 9 10 11 19
第8趟:1 3 4 5 6 8 9 10 11 19
第9趟:1 3 4 5 6 8 9 10 11 19
*/
相关推荐
直接插入排序法、冒泡排序法、直接选择排序法算法
C语言代码 直接插入法排序算法fun1,冒泡法排序排列算法fun2,直接选择法排序算法fun3。
(九)数据结构之简单排序算法实现:冒泡排序、插入排序和选择排序
1、冒泡排序 /* 冒泡排序,按照由小到大顺序进行排序 */ void Bubble_Sort( ElementType A[], int N ) { int P, i; int flag = 0; /* 定义一个flag来判断带排序序列是否有序或局部有序,提高算法效率 */ for ( P=N-1; P>=0; P-- ) { flag = 0; for( i=0; i<P;
7种常用排序算法实现(C++)(冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序以及快速排序)
本文件是7种常用排序算法的实现(C++),包括冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序以及快速排序。代码详细有注释且有测试用例。
冒泡排序、选择排序、插入排序 算法实现(C++)
这三种排序方法都是O(N2)的,概念和实现如下。 冒泡排序:通过N-1次对剩余未排序元素中最大(小)元素的上浮来实现排序,上浮过程通过交换相邻元素实现。 template void BubbleSort(ElementType A[], int N) { ElementType Temp; for (int i=0; i { fo
直接插入、折半插入、冒泡、快速、简单选择等排序方法 用c语言实现
直接插入、折半插入、冒泡、快速、简单选择等排序方法 用c语言实现 代码运行正常 不会有任何的问题
使用buildroot系统的qmake编译QT出现Unknown module(s) in QT: xxxx 的错误解决方法
可以看到,我这里使用的是 qt5base-5.15.2 目录下的qmake,这个qmake只包含了基础的qt模块,而额外添加的qt模块没有包含进去,需要使用。可以看到我这里是有的,如果你跟我一样,模块存在,但是还是报找不到对应模块的错误的话,大概率是跟我一样,用错qmake了,看第二点。在包含 qt5base 目录下查看,是否有对应模块的目录,如果没有的话,需要通过make menuconfig 添加一下。目录下的qmake才可以。
【简单排序算法】:简单选择排序、直接插入排序和冒泡排序
【简单排序算法】:简单选择排序、直接插入排序和冒泡排序 简单选择排序: 原理:设所排序序列的记录个数为n。i取1,2,…,n-1,每次从所有n-i+1个记录(Ri,Ri+1,…,Rn)中找出最小的记录,与第i个记录交换。执行n-1趟 后就完成了记录序列的排序。性能:最好、最坏和平均时间复杂度均为O(n2),不稳定排序算法。 JAVA实现: 1 //简单选择排序 2 ...
windows10 + wsl2安装docker
一、安装wsl https://docs.microsoft.com/zh-cn/windows/wsl/install-win10 1.1以管理员身份运行powershell 1.2执行如下命令 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 1.3重启电脑 1.4 重启电脑后,如果需要安装wsl2, 则安装官方文档继续后续操作,因我...
数据结构--C语言--排序算法的实现--插入排序,希尔排序,冒泡排序,快速排序,简单选择排序,堆排序
排序算法的实现(必做,验证性实验,4学时) 实验目的 熟悉排序的方法、过程及原则。掌握插入排序、快速排序、选择排序、归并排序的算法思想及实现方法,掌握其时间复杂度的分析方法。 实验内容 定义待排序序列的存储结构。验证插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序中各排序方法中的一、二个排序算法。 插入类排序:直接插入排序、希尔排序 交换类排序:冒泡排序、快速排序 ...
从零构建腾讯滑块验证码破解引擎:逆向工程与实战对抗
本文深入解析腾讯滑块验证码(原天御验证码)的防护机制,包括环境感知层、行为分析层和验证决策层的核心技术。通过JSVMP虚拟机保护、轨迹验证算法和动态加密体系,腾讯验证码实现了高效的人机识别。文章还提供了安全研究实践指南,涵盖环境模拟和验证码识别方案,并探讨了防御对抗的演进趋势与合规研究建议。
unity 在透明物体上投射阴影
unity版本:2019.4.16 创建一个shader,代码如下: Shader "ChuckLee/ARShadow" { Properties { _ShadowColor("Shadow Color", Color) = (0.1, 0.1, 0.1, 0.53) } SubShader { Tags{ "RenderType" = "Transparent" "Queue" = "Geometry+1" } Blend SrcAlpha OneMinusSrcAlph
数据结构-十大排序算法
十大排序算法分别是直接插入排序、折半插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序、外部排序。其中插入排序包括直接插入排序、折半插入排序、希尔排序;交换排序包括冒泡排序、快速排序;选择排序包括简单选择排序、堆排序。
第1集:认识 Claude Code —— AI 编程新纪元
1. 定义 Claude Code:终端中的 AI 编程代理Claude Code 是 Anthropic 公司于 2025 年 5 月正式推出的命令行 AI 编程工具,它不只是一个代码补全工具,而是一个能够理解项目、自主执行任务的**终端 AI 代理(Agent)。它的核心理念是 **"生于终端,活于终端"** (lives in your terminal)。与深度嵌入图形界面(GUI)的工具不同,Claude Code 选择直接融入开发者最原始、最核心的工作环境——命令行。
python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现
写文章主要是记录自己每天学习的东西,本篇文章主要介绍数据结构中常用的简单的排序算法,虽然这些算法用Python实现起来不是十分的高效,不如c、java之类的运行速度快,应用Python实现主要是为了:1、证明我已经理解了这些算法,2、实现算法可以给自己带来莫名的成就感,这也算是自己的一点积累吧,多少年后,看了这些文章会有些许的自豪吧,好了,言归正传,进入今天的正题:简单排序算法之选择、冒泡、插入排...
Matlab 轴承信号仿真+分析
文章目录项目说明1、信号仿真1.1 仿真公式1.2 信号参数设置1.3 代码实现2、仿真信号分析2.1 小波变换2.2 快速谱峭度 项目说明 本文主要解决两个问题: 1、仿真包含周期性冲击信号、随机干扰冲击信号、调制干扰信号以及随机噪声四个成分的故障轴承信号; 2、使用小波变换以及快速谱峭度对该仿真信号进行分析。 1、信号仿真 1.1 仿真公式 这里的仿真信号公式主要参考了包文杰学者的硕士论文《加权谱峭度故障诊断方法研究与应用》,列举公式如下: 周期性冲击信号仿真 随机干扰冲击信号仿真 调制
AI翻译工具自动翻译日语视频生成srt中文字幕,支持离线轻松生成任意日语视频字幕!可选择支持显卡模式和cpu模式低显存也能用
【AI离线字幕神器:日语视频一键转中文字幕】推荐一款基于Faster-Whisper的本地化字幕工具,可离线生成日语视频的中文字幕(.srt格式),支持CPU/GPU加速处理。实测1小时视频最快4-5分钟完成翻译,无需联网保护隐私。操作简单只需拖拽文件,支持批量处理音频(mp3/wav)和视频(mp4/mkv)文件,还能自定义输出格式和参数调整。特别适合需要观看无字幕日语资料的用户,堪称技术宅必备神器。下载地址附后,包含详细使用教程和参数配置说明。
C数据结构,常用的排序重温
1)数字类型一致2)存储连续3)查询方便4)创建时数组大小确定。多多理解,记忆,确实较难一些。
在 FreeStyle SAP UI5 应用里优雅落地 Draft 草稿机制:用 DraftManager 封装 DraftController 的一套实战套路
SAP Fiori应用中,Draft草稿机制是解决业务中断、多人协作和长表单填写等痛点的核心能力。本文提出了一套针对FreeStyle SAP UI5应用的Draft管理方案,通过封装sap.ui.generic.app.transaction.DraftController为DraftManager服务类,将复杂的草稿操作逻辑集中管理。该方案实现了草稿的创建、激活、丢弃等核心功能,使控制器只需调用简单意图式API即可完成操作,同时解决了组件化架构下的上下文切换、统一错误处理等问题。文章还详细介绍了后端Dr
数据结构常用查找排序算法
数据结构排序算法(插入,交换,归并,基数,堆排序)
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
C#排序算法
C#十种排序算法 1. 冒泡排序 N个数字来排队,两两相比小靠前。 外层循环N-1,内层循环N-1-i。 int[] list = new int[8] { 8,6,2,7,1,9,0,3}; for (int i = 0; i < list.Length-1; i++) { for (int j = 0; j < list.Length-i-1; j++) { if (list[...
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
数据结构排序方法1
/ 收集桶中元素回原数组。// 分配元素到桶中。// 基数排序主循环。
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
数据结构C语言-9种排序算法(插入、交换、选择、归并、基数排序)
以下代码包含: 直接插入排序、折半插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序 #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int status; typedef int ElemType;...
排序算法的理解和实现
排序算法一般分为两大类,一类是外部排序,这种排序的规模往往比较大,要排序的数据无法同时存放在内存中,必须在排序的过程中不断的在内外存之间移动;另一类是内部排序,规模较小。可以在完全在内存中进行。今天主要实现的是内部排序,常见的内部排序又可以分为五大类:插入排序、交换排序、选择排序、归并排序、基数排序。
【数据结构基础】五大排序算法的C++实现(冒泡,选择,插入,归并,快排)
【数据结构基础】各大排序算法的C++实现
实现冒泡排序、插入排序、选择排序、shell排序
public class Textsort { public static void bubbleSort(int[] x){ //冒泡排序 for(int i=0;i<x.length;i++){ for(int j=i+1;j<x.length;j++){ if(x[i]>x[j]){ int temp=x[i]; x[i]=x[j]; x[
【数据结构与算法】简单排序(冒泡排序、选择排序、插入排序)完整思路,并用代码封装排序函数
之前的文章,我已经把前端需要了解的数据结构都给说了一边,并且我们也都对其进行了封装。现在我们要开始对排序算法部分进行讲解,排序算法顾名思义,就是对一堆杂乱无章的数据按照一定的规则将它们有序地排列在一起。 在讲解排序算法时,大致分成两大类,如下图 本文
1407



被折叠的 条评论
为什么被折叠?



