数据结构实验之排序二:交换排序 sdut oj 3399

输入n个整数并排序输出;调用冒泡排序法进行排序的函数(C) 1. 使用了:选择排序法,冒泡排序法 2. 排序法中对于两个数据的交换用了指针,用了引用 阅读详情

数据结构实验之排序二:交换排序

Time Limit: 1000MS Memory limit: 65536K

题目描述

冒泡排序和快速排序都是基于"交换"进行的排序方法,你的任务是对题目给定的N个(长整型范围内的)整数从小到大排序,输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数。

输入

连续多组输入数据,每组数据第一行给出正整数N(N ≤ 10^5),随后给出N个整数,数字间以空格分隔。

输出

输出数据占一行,代表冒泡排序和快速排序进行排序分别需要的交换次数,数字间以1个空格分隔,行末不得有多余空格。

示例输入

8
49 38 65 97 76 13 27 49

示例输出

15 9

提示

注意:数据相等时不做交换

来源

xam

示例程序

#include <bits/stdc++.h>

using namespace std;

int s2;
void aa(int b[], int low, int high)
{
    int x = b[low];
    int i = low;
    int j = high;
    if(low >= high)
        return ;
    while(i < j)
    {
        while(i < j&&b[j] >= x)
            j--;
            b[i] = b[j];
            if(i < j)
                s2++;
        while(i < j&&b[i] <= x)
            i++;
            b[j] = b[i];
            if(i < j)
            s2++;
    }
    b[i] = x;
    aa(b, low, i-1);
    aa(b, i+1, high);
}

int main()
{
    int n, a[100100], b[100100];
    while(~scanf("%d", &n))
    {
        int s1=0;
        s2=0;
        for(int i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
            b[i] = a[i];
        }
        for(int i = 0; i < n-1; i++)
            for(int j = 0; j < n-i-1; j++)
            {
                if(a[j] > a[j+1])
                {
                    int t;
                    t = a[j];
                    a[j] = a[j+1];
                    a[j+1] = t;
                    s1++;
                }
            }
        aa(b, 0, n-1);
        printf("%d %d\n", s1, s2);
    }
    return 0;
}



C语言之一维数组之冒泡排序and交换次数 设计一子函数用冒泡排序法对10个元素的一维整型数组升序排序并输出交换总次数。一维数组元素从键盘输入。 要求: 1、使用子函数: int SortSum(int a[],int n)//n是数组元素个数,返回值为交换总次数。 2、在子函数中实现排序,不允许在子函数中输出。 【输入形式】 主函数中循环输入一个10个数组元素。 【输出形式】 输出交换总次数及升序排序的数组 【样例输入1】 1 2 6 6 9 87 7 4 5 【样例输出2】 17 1 2 4 5 6 6 7 7 8 9. 阅读详情

相关推荐

解决com.kingbase8.util.KSQLException: This _connection has been closed.

一个消息管理系统,系统采用kingbase8数据库,数据库采用单体模式,后台应用也采用springboot单体模式。系统正式上线后,出现几个JDBC响应的异常信息: com.kingbase8.util.KSQLException: An I/O error occurred while sending to the backend. java.net.SocketTimeoutException: Read timed out.

qq_38127559的博客 2757

快速排序的交换次数

【问题描述】 快速排序(quick sort)是对冒泡排序的一种改进,改进的着眼点是:在冒泡排序中,记录的比较和移动是在相邻位置进行的,记录每次交换只能后移一个位置,因而总的比较次数和移动次数较多。在快速排序中,记录的比较和移动从两端向中间进行,值较大的记录一次就能从前面移动到后面,值较小的记录一次就能从后面移动到前面,记录移动的距离较远,从而减少了总的比较次数和移动次数。快速排序算法的基本思想如...

weixin_44034024的博客 8776

StarUML最新版汉化与破解二合一教程:5分钟搞定永久使用

本文提供StarUML最新版的高效使用指南,涵盖从安装到深度定制的全流程优化方案。包括软件获取最佳实践、界面个性化设置、核心建模技巧、团队协作策略及性能优化建议,帮助架构师和开发团队提升UML建模效率。特别推荐版本控制集成和文档自动化输出方案,适用于各类规模的项目开发。

weixin_42530732的博客 453

冒泡排序的交换次数

题意: 给定一个1~n的排列a0,a1,…an-1,求对这个数列进行冒泡排序所需要的交换次数(冒泡排序是每次找到满足ai>ai+1的i,并交换ai和ai+1,直到这样的i不存在为止的算法)。 限制条件:1   输入: n=4, a={3,1,4,2} 输出: 3   冒泡排序的复杂度是O(n2),所有无法通过模拟冒泡排序的过程来计算需要的交换次数。不过我们可以通过选取适当的数据结

MADE_Y 2万+

SAP-MM-PR分配货源并转PO

SAP-MM-PR分配货源并转PO

yanzibing99的博客 5474

matlab电偶极子源码,电偶极子的MATLAB场模拟

电偶极子周围电场电势分布的MATLAB三维模拟Matlab可以用于模拟四维场的效果,本文以电偶极子的电场和电势场为例展示MATLAB在该方面领域的应用。摘要电偶极子由一个正电荷和一个负电荷组成,其电场和空间电势分布与单电荷相比具有一些重要的特性。本文将给出电场和电势场的近似表达式。这两个量的精确表达式是复杂的,不太常用,因此 MATLAB 被采用来操作精确值和绘制三维分布的远区域, 近区域和一侧区...

weixin_35135480的博客 3150

冒泡排序_递增排列

冒泡排序_递增排列

这题AC再睡 1683

使用Jacob实现将Word文件转换为Pdf文件

如果是首次使用 jacob,建议先直接从 github上下载 zip包,因为在实现Word转Pdf的时候,不仅需要用到 jacob.jar,还需要 jacob.dll 库,而zip包中都有。官方使用文档可以参考:https://github.com/freemansoft/jacob-project/blob/main/docs/UsingJacob.md。// 如果安装的是微软的 Office,需要使用 Word.Application。

qq_41672950的博客 750

数据结构实验之排序二:交换排序

数据结构实验之排序二:交换排序 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 冒泡排序和快速排序都是基于"交换"进行的排序方法,你的任务是对题目给定的N个(长整型范围内的)整数从小到大排序,输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数。 输入 连续多

3044

IEDA激活码失效?教你5分钟快速续期的方法

本文针对IEDA激活码失效问题,提供了一套从快速应急到深度排查的完整解决方案。文章不仅详解了5分钟快速续期与清理缓存等应急方法,更深入剖析了授权机制、离线激活流程,并指导如何构建可持续的授权管理策略,帮助开发者彻底解决激活困扰,确保开发环境稳定。

a0b1c2d3的专栏 274

平台跳跃游戏中的自动寻路,与地图导航扩展

平台游戏:主要的游戏方式是在2D平面上使用各种方式在悬浮平台上进行移动和穿过各种障碍。 现如的平台游戏中的平台特性与种类是很多的,像马里奥(FC)的单向支撑不可穿透的,或魂斗罗(FC)单向支撑可穿透的… \ 超级玛丽 魂斗罗 空洞骑士 蔚蓝 本博文 支撑 上 上 上 左、上、右 上 穿透 无 上、下 无 上(部分) 上下 所以本文主要以向上支撑并上下穿透的平台特性来进行实现 需求分析 在关卡设计后,地形的数据需要自动识别 地形中的平台可上下穿透移动,并可向上站立 平台的移动路..

MOV的博客 3062

冒泡排序中数据交换的次数

原题: 题目描述       听说过冒泡排序么?很好玩很暴力的一种排序方式,但对于小数据也是很实用的哦。今天我们不希望你用它来排序,而是希望你能算出从小到大冒泡排序的过程中一共进行了多少次数据交换。 输入 输入数据的第一行为一个正整数 T ,表示有 T 组测试数据。 接下来T行,每行第一个整数N, 然后有N个整数,无序。0 输出 输出共 T 行。 每行一个整数,

丙三醇 2114

一次搞定 SAP IDoc 失败重处理与安全清理:BD87 实战指南

本文介绍了SAP IDoc错误处理的BD87实战指南。主要内容包括: BD87的核心功能:监控IDoc处理状态并支持人工重处理或标记删除,适用于入站/出站IDoc故障处理。 重处理前的关键步骤: 区分技术错误与业务错误 检查是否允许重复处理 确认日期范围设置正确 标准操作流程:通过BD87选择错误IDoc节点执行重处理,特别适用于状态51的应用错误。 标记删除操作:将无用IDoc标记为可清理状态,后续可通过WE11物理删除或归档处理。 常见问题解决方案:包括权限控制、批量处理优化建议以及自动化定位工具的开发

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 456

SDUT OJ 3399 数据结构实验之排序二:交换排序

数据结构实验之排序二:交换排序 Time Limit: 1000MS Memory limit: 65536K 题目描述 冒泡排序和快速排序都是基于"交换"进行的排序方法,你的任务是对题目给定的N个(长整型范围内的)整数从小到大排序,输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数。 输入 连续多组输入数据,每组数据第一行给出正

公子世无双的博客 614

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

sdut oj3399 数据结构实验之排序二:交换排序(快排+冒泡)

题目链接:点击打开链接 数据结构实验之排序二:交换排序 Time Limit: 1000MS Memory limit: 65536K 题目描述 冒泡排序和快速排序都是基于"交换"进行的排序方法,你的任务是对题目给定的N个(长整型范围内的)整数从小到大排序,输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数。 输入 连续多组输入数据,每

Annfan123的博客 510

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

排序算法之快速排序

快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 分治法的基本思想      分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。 快速排序的基本思想 从待排序的数据序列中任取一个数据(如第一个数...

风动云彩 802

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

数据结构10--排序算法

1.目标 理解插入排序的基本思想,理解交换排序的基本思想 运用插入排序的思想实现直接插入排序,折半插入排序,希尔排序,运用交换排序的思想实现冒泡排序,快速排序 2.插入排序 每次将一个待排序的数据元素,按照其关键字的大小插入到前面已排好序的有序序列的适当位置,使插入以后的数据序列仍然为一个有序序列,直到整个序列成为有序序列为止 1.直...

最后的武艺集大成者 1293

数据结构——排序

(自用,侵删)使一组记录成为按关键字有序的序列排序的分类原则存储介质 内部排序、外部排序比较器 串行排序、并行排序主要操作 比较、基数辅助空间 原地、非原地稳定性 稳定、非稳定自然性 自然、非自然按照分类原则不同将内部排序分为5类:插入、交换、选择、归并、分配几种排序方法,掌握比较次数、移动次数、辅助空间(时间复杂度和空间复杂度)、稳定性。

2401_86622931的博客 1353

排序算法(四)——快速排序

快速排序是对冒泡排序的一种改进,适用于待排记录个数很大并且原始记录随机(这也是数据的主要情况:多、乱)。快速排序的平均性能很好。

tanjiquan的博客 1875

冒泡排序中数据的交换次数

【问题描述】 冒泡排序算法的原理如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 现在希望算出从小到大冒泡排序的过程中一共进行了多少次数据交换。 【输入形式】 输入数据...

weixin_44034024的博客 7867

冒泡排序交换次数计算

给定一个1~n的数列,求出冒泡排序升序排列需要的交换次数 思路:需要用数据结构BIT来进行优化 需要求出数列中每一个数的逆序数,然后求和 每遍历一个值a[ i ],a[i ]在BIT[ i ]中对应的值及之后的值要加一,记录每个值出现前 小于自身值出现的次数 遍历到j时,a[ j ]前有 j 个数,小于自身的个数有b...

songziyuan_的博客 7809

冒泡交换次数

现有一个含有n个整数的序列,你要做的就是交换两个数的位置直到整个序列按照升序排列,那么将这个整数序列排好序,使用冒泡排序需要交换多少次?例如,1,2,3,5,4,我们只需要交换一次,将4和5交换即可。第一行输入n(n≤100),第二行依次输入n个整数。对每一组输入,在一行中输出交换的次数。7-63 冒泡的交换次数。

MQWQTT的博客 1146

交换排序-快速排序

时间复杂度:高效的排序算法,比较次数和移动次数都应该尽可能的少。 空间复杂度:算法执行期所需要辅助空间和待排序的数据量无关。理想空间复杂度为O(1) 简述 快速排序可以说算是针对冒泡排序的一种优化,冒泡排序是顺序交换,这样交换次数顺序增长。如果我们做跳跃的交换,那么可以使得交换次数也是跳跃性,会有所降低 算法思想 找出一个枢轴,用于做比较交换,并记下后用。一般用第一个(用第一...

ddxxii的博客 451

交换排序-交换次数.

  数据结构实验之排序二:交换排序 Submit Statistic Discuss 首先来了解一下, 排序大致可以分为哪几种:   交换排序: 包括冒泡排序,快速排序。       选择排序: 包括直接选择排序,堆排序。       插入排序: 包括直接插入排序,希尔排序。       合并排序: 合并排序。 #include&lt;bits/stdc++.h&gt...

BePosit的博客 1087

八大排序算法比较次数交换次统计程序

#include <iostream> #include<assert.h> using namespace std; template<typename E> inline void swap(E A[], int i, int j) { E temp = A[i]; A[i] = A[j]; A[j] = temp; } template <typename E> void insertsort(E A[], int n,int count1[],i

qq_45863239的博客 4684
上一篇: 数据结构实验之查找六:顺序查找 sdut oj 3378
下一篇: 交叉排序 sdut oj 1591
rain_snowing
博客等级 码龄10年 9粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值