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 ...
随机推荐
- window API GetProcessId OpenProcess
函数原型: DWORD WINAPI GetProcessId( _In_ HANDLE Process ); HANDLE OpenProcess( DWORD dwDesiredAccess, / ...
- js的相关距离
js的相关距离 一.dom对象的距离 ---dom.style.width : 对象本身的内容宽度(这里必须是内联样式中的width,带px)(content) ---dom.style.height ...
- html常用标签详解4-列表标签
列表标签 列表标签分为3大类:无序列表.有序列表.自定义列表.线面我会依依简单介绍 一.无序列表 有个type属性: 默认:disc:实心小圆点:circle:空心小圆点:square:实心小方块:n ...
- python 日记 day5 字典
一.数据类型分为: 1.不可变数据类型:元组,bool,int,str (不可更改的又叫可哈希) 2.可变数据类型 :list,dict ,set (可变的又叫不可哈希) 字典: 优点:1.可二分 ...
- Spring AOP(二)--注解方式
本文介绍通过注解@AspectJ实现Spring AOP,这里要重点说明一下这种方式实现时所需的包,因为Aspect是第三方提供的,不包含在spring中,所以不能只导入spring-aop的包,为了 ...
- Maven实战错误笔记:使用mvn archetype:generate报错:Unable to add module to the current project as it is not of packaging type 'pom'
在使用mvn archetype:generate生成Maven实战03:HelloWorld中的HelloWorld的项目骨架时报了这个错,从字面上分析是可能与pom.xml文件有关,然后我看了一下 ...
- Leetcode109. Convert Sorted List to Binary Search Tree有序链表转换二叉搜索树
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定的有序链表: [-10 ...
- bzoj 2935 [Poi1999]原始生物——欧拉回路思路!
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2935 有向图用最小的路径(==总点数最少)覆盖所有边. 完了完了我居然连1999年的题都做不 ...
- []==![] 为什么等于true?
最近碰到这样一个问题: []==![] 为什么等于true? 首先分析 !的优先级较==高,先运算==两侧的操作数: typeof []; //"object" typeof ...
- python类相关总结(持续更新)
__init__() 构造函数 __new__ () 在构造函数之前,用来创建对象的,返回值是一个对象,__init__指的是将__new__返回的对象作为self来传入函数中,后续参数两者都可以一样 ...