数据结构实验之排序二:交换排序
来源:互联网 发布:python 签到脚本 编辑:程序博客网 时间:2024/06/06 20:17
数据结构实验之排序二:交换排序
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
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
注意:数据相等时不做交换
#include <iostream>using namespace std;int sum = 0, cnt = 0;void qsort(int a[], int low, int high){ //快排if(low < high){ //快排的递归结束条件,长度大于1int key = a[low];int i, j;i = low;j = high;while(i < j){while(i < j && a[j] >= key) j--;if(a[i] != a[j]) //判断一下两个元素是否相等sum++;a[i] = a[j];while(i < j && a[i] <= key) i++;if(a[i] != a[j])sum++;a[j] = a[i];}a[i] = key;qsort(a, low, i-1); //递归进行两端的快排qsort(a, i+1, high);}}/*void bubble_sort(int a[],int n) { //传统的冒泡排序,时间复杂度一直为O(n2) 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]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; cnt++; } } }*/void bubble_sort(int a[], int n){ //冒泡排序int i, j, t, lastexchenge; //标记最后交换的位置,如果是一个有序的数组,那么时间复杂度降为O(n)i = n-1;while(i > 0){lastexchenge = 0;for(j = 0; j < i; j++){if(a[j+1] < a[j]){//swap(a[j], a[j+1]);t = a[j];a[j] = a[j+1];a[j+1] = t;cnt++;lastexchenge = j;}}i = lastexchenge;}}int main(){int n, a[100005], b[100005];while(cin>>n){sum = 0;cnt = 0;for(int i = 0; i < n; i++){cin>>a[i];b[i] = a[i];}qsort(a, 0, n-1);bubble_sort(b, n);cout<<cnt<<" "<<sum<<endl;/*for(i = 0; i < n-1; i++)cout<<b[i]<<" ";cout<<b[i]<<endl;*/}return 0;}
阅读全文
0 0
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 数据结构实验之排序二:交换排序
- 160个练手CrackMe-042
- IT风投的一声叹息
- JS 中 ++i 和i++的区别
- 2017-12-20
- JS之函数
- 数据结构实验之排序二:交换排序
- Java设计模式之访问者模式
- 期末复习JAVA 闰年判断
- BZOJ 4736/UOJ #274. 【清华集训2016】温暖会指引我们前行 LCT边权操作
- 160个练手CrackMe-043
- angular查询
- HDOJ 2027 统计元音
- SLAM算法-----几种2D-slam算法比较
- JS能力评测经典题----编码规范