SDUT-3399_数据结构实验之排序二:交换排序
数据结构实验之排序二:交换排序
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
冒泡排序和快速排序都是基于"交换"进行的排序方法,你的任务是对题目给定的N个(长整型范围内的)整数从小到大排序,输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数。
Input
连续多组输入数据,每组数据第一行给出正整数N(N ≤ 10^5),随后给出N个整数,数字间以空格分隔。
Output
输出数据占一行,代表冒泡排序和快速排序进行排序分别需要的交换次数,数字间以1个空格分隔,行末不得有多余空格。
Sample Input
8
49 38 65 97 76 13 27 49
Sample Output
15 9
Hint
注意:数据相等时不做交换
题解:在原来的排序函数上稍微改造就可以了,注意需要两个数组存储原数据,因为第一个函数对数组进行排序后,当前数组已经有序,会影响另外一个排序的统计,所以两个排序函数各用一个数组。
关于快排的统计,原本以为最后一个(a[i]=x)需要记录的,结果WA了,后来反应过来,快排交换过程是覆盖式的,(a[i]=x)是完成了整个交换过程,不用计数。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int a[112345],b[112345],n,p,q;
void sort(int l,int r)
{
if(l>=r)
return;
int i = l,j = r;
int x = a[l];
while(i<j)
{
while(i<j&&a[j]>=x) j--;
if(a[i]!=a[j])
{
a[i] = a[j];
p++;
}
while(i<j&&a[i]<=x) i++;
if(a[i]!=a[j])
{
a[j] = a[i];
p++;
}
}
a[i] = x;
sort(l,i-1);
sort(i+1,r);
}
void f(int a[])
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(a[j]>a[j+1])
{
q++;
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
int main()
{
int i;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
b[i] = a[i];
}
q = p = 0;
sort(0,n-1);
f(b);
printf("%d %d\n",q,p);
}
return 0;
}
SDUT-3399_数据结构实验之排序二:交换排序的更多相关文章
- SDUT OJ 数据结构实验之排序二:交换排序
数据结构实验之排序二:交换排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- SDUT 3399 数据结构实验之排序二:交换排序
数据结构实验之排序二:交换排序 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 冒泡排序和快 ...
- SDUT 3401 数据结构实验之排序四:寻找大富翁.!
数据结构实验之排序四:寻找大富翁 Time Limit: 150MS Memory Limit: 512KB Submit Statistic Problem Description 2015胡润全球 ...
- SDUT OJ 数据结构实验之二叉树二:遍历二叉树
数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...
- SDUT OJ 数据结构实验之串二:字符串匹配
数据结构实验之串二:字符串匹配 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- SDUT OJ 数据结构实验之排序四:寻找大富翁
数据结构实验之排序四:寻找大富翁 Time Limit: 200 ms Memory Limit: 512 KiB Submit Statistic Discuss Problem Descripti ...
- SDUT OJ 数据结构实验之排序三:bucket sort
数据结构实验之排序三:bucket sort Time Limit: 250 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem D ...
- SDUT OJ 数据结构实验之排序一:一趟快排
数据结构实验之排序一:一趟快排 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- SDUT OJ 数据结构实验之排序八:快速排序
数据结构实验之排序八:快速排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 给定N ...
随机推荐
- 单例模式以及在C#中的使用
下面做一些简要的说明. 1. 单例模式(Singleton Pattern),又称作单件模式,当然也有一种诙谐的称谓:单身模式.在经典的GoF所著的<Design Patterns>一书中 ...
- Gym-102141E
https://vjudge.net/problem/Gym-102141E 用set乱搞 #include<iostream> #include<cstdio> #inclu ...
- mysql系统变量与状态变量
一.系统变量分为全局系统变量和会话系统变量:有些变量既是全局系统变量,有些变量只有全局的,有些变量只有会话的. .变量的查询: show global variables like 'log' \G; ...
- BZOJ2191:Splite
Description 给两个多边形,问否在平移旋转不翻转不重叠的情况下拼成一个凸多边形. Input 每组第一行一个数N表示第一个多边形的顶点数,下接N行按顺序(逆/顺时针)给出顶点坐标,再下一行给 ...
- Ionic 图片预览ion-slide-box,ion-slide,ion-scroll实现
1.index.html 代码 <body ng-app="starter"> <ion-pane> <ion-header-bar class=&q ...
- Oracele 11.2.0.3 的一个问题
最近又在折腾Oracle.由于要用到Oracle spatial对Google投影的空间数据的操作,所以得安装11.2.0.3以上版本的Oracle.但是发现这样的一个问题,当我在64位系统的笔记本上 ...
- psu online course
https://onlinecourses.science.psu.edu/statprogram/programs Graduate Online Course Overviews Printer- ...
- Tool-XManager:XManager(远端X窗口系统的工具)
ylbtech-Tool-XManager:XManager(远端X窗口系统的工具) Xmanager是一款小巧.便捷的浏览远端X窗口系统的工具.在工作中经常使用Xmanager来登录远端的Solar ...
- Python - 基本数据类型及其常用的方法之列表
列表: 特点:用 [] 括起来,切元素用逗号分隔:列表内的元素可以为任何的数据类型. 列表的基本操作: 1.修改 li = [12, 5, 6, ["Aiden", [2, 4], ...
- JasperReports报表变量13
报表变量是建立在报表表达式之上的特殊对象.报表变量简化以下任务: 报表,其中大量使用在整个报告模板表达式.这些表达式可以通过使用报表变量只能声明一次. 计数,求和,平均,最低,最高,方差等:报表变量可 ...