题目

给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。

本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:

数据1:只有1个元素;
数据2:11个不相同的整数,测试基本正确性;
数据3:103个随机整数;
数据4:104个随机整数;
数据5:105个随机整数;
数据6:105个顺序整数;
数据7:105个逆序整数;
数据8:105个基本有序的整数;
数据9:105个随机正整数,每个数字不超过1000。

输入格式:

输入第一行给出正整数N(≤10^5),随后一行给出N个(长整型范围内的)整数,其间以空格分隔。

输出格式:

在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。

输入样例:

11
4 981 10 -17 0 -20 29 50 8 43 -5

输出样例:

-20 -17 -5 0 4 8 10 29 43 50 981

各类排序算法

#include <stdio.h>
#define cutoff 100  //数值大小决定是否爆栈void bubbleSort(int* a,int n);
void swap(int *a,int *b);
void outPut(int *a,int N);
void choseSort(int* a,int n);
void insertSort(int* a,int n);
void changeLenthInsertSort(int *a,int n,int d);
void shellSort(int *a,int n);
void SedgewickShellSort(int *a,int n);int chosePivot(int *a,int l,int r);
void quickSort(int *a,int l,int r);
void quickSortStand(int* a,int n);int main(){//输入int N;scanf("%d",&N);int *a=(int*)malloc(sizeof(int)*N);for(int i=0;i<N;i++)scanf("%d",&a[i]);//排序方法//bubbleSort(a,N);//choseSort(a,N);//insertSort(a,N);//shellSort(a,N);//SedgewickShellSort(a,N);//quickSortStand(a,N);//会爆栈//输出outPut(a,N);return 0;
}void swap(int *a,int *b){int temp=*a;*a=*b;*b=temp;
}void outPut(int *a,int N){printf("%d",a[0]);for(int i=1;i<N;i++)printf(" %d",a[i]);
}void bubbleSort(int* a,int n){int f=1;for(int i=1;i<n&&f;i++){f=0;for(int j=0;j<n-i;j++)if(a[j]>a[j+1]){swap(&a[j],&a[j+1]);f=1;}}}
void choseSort(int* a,int n){int max;int f=1;for(int i=1;i<n&&f;i++){max=0;f=0;for(int j=1;j<=n-i;j++){if(a[j]>a[max])max=j;f=1;}if(f)swap(&a[n-i],&a[max]);}
}void insertSort(int* a,int n){int tmp,j;for(int i=1;i<n;i++){tmp=a[i];for( j=i;j>0&&tmp<a[j-1];j--)a[j]=a[j-1];a[j]=tmp;  }}void changeLenthInsertSort(int *a,int n,int d){int tmp,j;for(int i=d;i<n;i++){tmp=a[i];for( j=i;j>=d&&tmp<a[j-d];j-=d)a[j]=a[j-d];a[j]=tmp;  }
}void shellSort(int *a,int n){for(int d=n/2;d>0;d/=2)changeLenthInsertSort(a,n,d);
}void SedgewickShellSort(int *a,int n){int Sedgewick[]={146305 ,64769, 36289, 16001, 8929, 3905, 2161,929, 505, 209, 109, 41, 19, 5, 1, 0};int i;for (  i=0; Sedgewick[i]>=n; i++ );for ( int D=Sedgewick[i]; D>0; D=Sedgewick[++i] )changeLenthInsertSort(a,n,D);}int chosePivot(int *a,int l,int r){int center=(r+l)/2;if(a[l]>a[center])swap(&a[l],&a[center]);if(a[l]>a[r])swap(&a[l],&a[r]);if(a[center]>a[r]);swap(&a[center],&a[r]);swap(&a[r-1],&a[center]);return a[r-1];
}void quickSort(int* a,int l,int r){if(cutoff<=r-l){int pivot=chosePivot(a,l,r);int i=l,j=r-1;while(1){while(a[++i]<pivot)while(a[--j]>pivot)if(i<j)swap(&a[i],&a[j]);elsebreak;}swap(&a[i],&a[r-1]);quickSort(a,l,i-1);quickSort(a,i+1,r);  }elseinsertSort(a+l,r-l+1);}void quickSortStand(int* a,int n){quickSort(a,0,n-1);
}

24. 09-排序1 排序 数据结构 浙江大学 拼题 PTA相关推荐

  1. 17. 06-图3 六度空间 数据结构 浙江大学 拼题

    描述 六度空间"理论又称作"六度分隔(Six Degrees of Separation)"理论.这个理论可以通俗地阐述为:"你和任何一个陌生人之间所间隔的人不 ...

  2. 7-2 拼题A打卡奖励 dp

    7-2 拼题A打卡奖励 分数 25 作者 陈越 单位 浙江大学 拼题 A 的教超搞打卡活动,指定了 N 张打卡卷,第 i 张打卡卷需要 m i ​ 分钟做完,完成后可获得 c i ​ 枚奖励的金币.活 ...

  3. 10-9-堆排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版

    课本源码部分 第10章  内部排序 - 堆排序 --<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码 ...

  4. python实现排序算法_数据结构之(3)python实现排序算法

    常用排序与插入算法 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直 ...

  5. 10-10-归并排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版

    课本源码部分 第10章  内部排序 - 归并排序 --<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课本源 ...

  6. 10-11-基数排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版

    课本源码部分 第10章  内部排序 - 基数排序 --<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课本源 ...

  7. <排序>《数据结构(C语言版)》

    目录 <数据结构(C语言版)>之排序实现 --By 作者:新晓·故知 排序性能测试对比: 1.排序的概念及其运用 1.1排序的概念 1.2排序运用 1.3 常见的排序算法 2.常见排序算法 ...

  8. 【数据结构-排序】1. 图解插入排序三种实现(插入排序/折半排序/希尔排序)

    直接插入排序(插入排序) 排序思想 对于一个数组 A[0,n] 的排序问题,假设认为数组在 A[0,n-1] 排序的问题已经解决了. 考虑 A[n] 的值,从右向左扫描有序数组 A[0,n-1] ,直 ...

  9. 【数据结构笔记38】桶排序、基数排序、多关键字排序、排序算法汇总比较

    本次笔记内容: 10.3.1 桶排序 10.3.2 基数排序 10.3.3 多关键字排序 10.4 排序算法比较 文章目录 排序算法背景 桶排序 基数排序 多关键字排序(基数排序) 排序算法的比较 排 ...

最新文章

  1. 精心安利8个良心好用的学习神器和办公神器
  2. iOS进阶之类别(Category)(9)
  3. SQLite中的表达式
  4. 4.2w Star的文件同步工具,比VIP网盘还好用!
  5. Java+大数据开发——Hadoop集群环境搭建(二)
  6. Codeforces Round #732 (Div. 2) C. AquaMoon and Strange Sort 思维
  7. 包+类导入+静态导入+类放入包中+包作用域
  8. 判断是否存在此对象_JVM的垃圾回收机制,判断对象是否死亡
  9. python函数内的作用域包括什么_python菜鸟求问关于嵌套函数中作用域范围应该怎么理解?...
  10. .sh文件怎么写_typeScript 配置文件该怎么写?
  11. python-演练-通过描述符来控制另一个类的实例化参数
  12. 深入Python字典的内部实现
  13. 4 计数器verilog与Systemverilog编码
  14. ant design table column 设置width不生效解决方案
  15. 深入解读Linux进程调度系列(6)——抢占与非抢占
  16. 四川普教计算机教室配备比例,中小学音乐教室建设标准及配置方案
  17. FlowNet到FlowNet2.0:基于卷积神经网络的光流预测算法
  18. oracle数据存入临时表,ORACLE数据库临时表总结
  19. lpush rpush 区别_lpush(lpush和rpush)
  20. ipa文件上架app store的方法,很简单

热门文章

  1. C++JZ83 剪绳子(进阶版)
  2. 软件测试一般流程及方法
  3. python照片转素描_python如何将图片转换素描画
  4. 农行人工智能机器人安安_农业银行信用卡新卡种,只要有电信号码通通3万!...
  5. 解决win10中Edge、应用商店等UWP应用都无法联网的问题
  6. 科技周刊第十三期:业余选手和专业选手的区别
  7. iOS UILabel添加删除线
  8. 【基于机器学习的垃圾分类监控系统】
  9. SQLyog学习笔记01---安装及基本使用
  10. [变异测试] PITest使用教程