冒泡排序和快排的交换次数
来源:互联网 发布:excel2013破解软件 编辑:程序博客网 时间:2024/05/16 19:28
数据结构实验之排序二:交换排序
Time Limit: 1000MS Memory Limit: 65536KB
SubmitStatistic
Problem Description
冒泡排序和快速排序都是基于"交换"进行的排序方法,你的任务是对题目给定的N个(长整型范围内的)整数从小到大排序,输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数。
Input
连续多组输入数据,每组数据第一行给出正整数N(N ≤ 10^5),随后给出N个整数,数字间以空格分隔。
Output
输出数据占一行,代表冒泡排序和快速排序进行排序分别需要的交换次数,数字间以1个空格分隔,行末不得有多余空格。
Example Input
849 38 65 97 76 13 27 49
Example Output
15 9
Hint
注意:数据相等时不做交换
Author
xam
#include<stdio.h>long long int num1, num2;int a[100], b[100];void kuaipai(int left, int right){ int data; long long int l, r; l = left; r = right; if(l<r) { data = a[l]; while(l < r) { while(l<r&&a[r]>=data) r--; a[l] = a[r]; if(r != l) num2++; while(l<r&&a[l]<=data) l++; a[r] = a[l]; if(l!=r) num2++; } a[l] =data; kuaipai(left, l-1); kuaipai(l+1, right); }}void maopao(int n){ long long int i, j; int t; for(i = 1; i < n; i++) { for(j = 1; j <= n-i; j++) { if(b[j] > b[j+1]) { t = b[j]; b[j] = b[j+1]; b[j+1] = t; num1++; } } }}int main(){ long long int n; long long int i; while(~scanf("%lld", &n)) { for(i = 1; i<= n; i++) { scanf("%d", &a[i]); b[i] = a[i]; } num1 = num2 = 0; kuaipai(1, n); maopao(n); printf("%lld %lld\n", num1, num2); } return 0;}
阅读全文
0 0
- 冒泡排序和快排的交换次数
- 排序算法之交换排序(冒泡和快排)
- 交换类排序:冒泡排序(优化)和快排
- 交换排序总结(快排,冒泡)
- 交换排序:快排VS冒泡
- 冒泡排序的交换次数
- 冒泡排序的交换次数
- 8.3 内部排序法---交换类排序(冒泡、快排)
- 交换排序------快排
- 交换排序之冒泡与快排C/C++
- 冒泡排序,快排
- 冒泡排序,快排
- php冒泡排序和快排
- 冒泡、快排、直插三种排序的比较
- 冒泡排序中数据交换的次数
- 冒泡排序中数据交换的次数
- 冒泡排序中数据交换的次数
- 冒泡排序中数据交换的次数
- Android关于AutoService、Javapoet讲解
- 全排列
- 数据结构与算法_链表1_单链表
- SSH项目中使用c3p0连接池
- Linux下搭建nginx(centOS 64位系统)
- 冒泡排序和快排的交换次数
- # !/usr/bin/python 和 #!/usr/bin/env python 区别
- Fiori学习笔记
- HashMap源码分析
- 正确获取View的宽高
- jetty 配置数据源以及应用
- 解决Vue打包后背景图片路径错误问题
- c语言掩码结构体
- dubbo配置