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

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

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

Input

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

Output

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

Sample Input

  1. 8
  2. 49 38 65 97 76 13 27 49

Sample Output

  1. 15 9

Hint

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

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 100100
  4. int x,y;
  5. void qusort(int a[], int left, int right )
  6. {
  7. int key,i,j,t;
  8. key=a[left];
  9. i=left;
  10. j=right;
  11. if(left>=right)
  12. return;
  13. while(i<j)
  14. {
  15. while(a[j]>=key&&i<j)
  16. j--;
  17. if(a[j]!=a[i]){
  18. a[i]=a[j];
  19. x++;
  20. }
  21. while(a[i]<=key&&i<j)
  22. i++;
  23. if(a[j]!=a[i]){
  24. a[j]=a[i];
  25. x++;
  26. }
  27. }
  28. //a[left]=a[i];
  29. a[i]=key;
  30. //qs=&x;
  31. qusort( a, left, i-1 );
  32. qusort( a, i+1, right);
  33. return;
  34. }
  35. void ooosort( int a[] , int n )
  36. {
  37. int i,j,t;
  38. for(i=0; i<n-1; i++){
  39. for(j=0; j<n-1-i; j++){
  40. if(a[j]>a[j+1]){
  41. t=a[j];
  42. a[j]=a[j+1];
  43. a[j+1]=t;
  44. y++;
  45. }
  46. }
  47. }
  48. //os=&y;
  49. }
  50. int main()
  51. {
  52. int i,n,a[N],b[N];
  53. while(scanf("%d",&n)!=EOF){
  54. x=0;y=0;
  55. for(i=0; i<n; i++){
  56. scanf("%d",&a[i]);
  57. b[i]=a[i];
  58. }
  59. qusort(a,0,n-1);
  60. ooosort(b,n);
  61. printf("%d %d\n",y,x);
  62. }
  63. return 0;
  64. }

SDUT OJ 数据结构实验之排序二:交换排序的更多相关文章

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

    数据结构实验之排序二:交换排序 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 冒泡排序和快 ...

  2. SDUT OJ 数据结构实验之二叉树二:遍历二叉树

    数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...

  3. SDUT OJ 数据结构实验之串二:字符串匹配

    数据结构实验之串二:字符串匹配 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  4. SDUT OJ 数据结构实验之排序四:寻找大富翁

    数据结构实验之排序四:寻找大富翁 Time Limit: 200 ms Memory Limit: 512 KiB Submit Statistic Discuss Problem Descripti ...

  5. SDUT OJ 数据结构实验之排序三:bucket sort

    数据结构实验之排序三:bucket sort Time Limit: 250 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem D ...

  6. SDUT OJ 数据结构实验之排序一:一趟快排

    数据结构实验之排序一:一趟快排 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  7. SDUT OJ 数据结构实验之排序八:快速排序

    数据结构实验之排序八:快速排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 给定N ...

  8. SDUT OJ 数据结构实验之链表二:逆序建立链表

    数据结构实验之链表二:逆序建立链表 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...

  9. SDUT-3399_数据结构实验之排序二:交换排序

    数据结构实验之排序二:交换排序 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 冒泡排序和快速排序都是基于"交 ...

随机推荐

  1. Tornado 高并发源码分析之六---异步编程的几种实现方式

    方式一:通过线程池或者进程池 导入库futures是python3自带的库,如果是python2,需要pip安装future这个库 备注:进程池和线程池写法相同 from concurrent.fut ...

  2. oracle查询列合并为行(listagg简单用法)

    今天工作时遇见一个数据查询分组问题,就是将分组后同一组数据某一列合并为一行,因为之前很少用到,这次工作中刚好有用到,所以手痒难耐,将它记录下来. 查询sql如下: select t.province_ ...

  3. sendClond如何更新邮件模板

    $url = 'http://www.sendcloud.net/webapi/template.update.json'; $API_USER = ''; $API_KEY = ''; $conte ...

  4. Leetcode:Task Scheduler分析和实现

    题目大意:提供k个任务,这些任务没有依赖关系(即可以任意调度).CPU完成一个任务需要耗时一个时间片段,当执行完一个任务后,相同的任务必须在n个时间片段才能得以执行.请问CPU通过调度最快能在多少时间 ...

  5. PHP配置数据库XML文件

    <?php $doc=new DOMDocument('1.0','utf-8'); //new一个dom对象 $doc->load("config.xml"); 加载 ...

  6. C++中内存区域的划分

    栈存储区 那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区.里面的变量通常是局部变量.函数参数等. 堆存储区(自由存储区) 那些由new或者malloc分配的内存块,他们的释放编译器 ...

  7. 使用Cytoscape画PPI网络图

    打开Cytoscape软件,根据菜单导入string_interactions.tsv文件 File ----> Import ----> Network from File 会弹出下图对 ...

  8. spring是如何由请求地址找到对应的control的

    spring先将所有的action bean放进内存中,然后根据@RequestMapping(value = "/", method = RequestMethod.GET)这种 ...

  9. Head First HTML与CSS、XHTML (中文版).(Elisabeth Freeman) PDF扫描版​

    面对那些晦涩的html书你不禁要问:“难道要成为专家之后才能读懂这些?”那么,你应该选择<head first html与css.xhtml(中文版)>真正来学习html.这本书对你来说, ...

  10. 函数LEN()使用方法

    string pro_sql = string.Format("select pr_bianma from tb_products where pr_bianma like '%120201 ...