51Nod1018 排序(C语言)
来源:互联网 发布:vlookup匹配多列数据 编辑:程序博客网 时间:2024/05/22 03:37
给出N个整数,对着N个整数进行排序
Input
第1行:整数的数量N(1 <= N <= 50000)第2 - N + 1行:待排序的整数(-10^9 <= A[i] <= 10^9)
Output
共n行,按照递增序输出排序好的数据。
Input示例
554321
Output示例
12345
C语言AC代码
#include<stdio.h>void sort(int*a,int left,int right){ if(left>=right) return ; int i=left; int j=right; int key=a[left]; while(i<j) { while(i<j&&key<=a[j]) j--; a[i]=a[j]; while(i<j&&key>=a[i]) i++; a[j]=a[i]; } a[i]=key; sort(a,left,i-1); sort(a,i+1,right);}int main(){ int i,n,a[50005]; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); sort(a,0,n-1); for(i=0; i<n; i++) printf("%d\n",a[i]); return 0;}
思路:①分治法:1划分问题:把问题的实例划分成子问题;2递归求解:递归解决子问题;3合并问题:合并子问题的解得到原问题的解。
②快速排序:1划分问题:把数组的各个元素重拍后分成左右部分,使得左边的任意元素都小于或等于右边的任意元素;2递归求解:把左右两部分分别排序;3合并问题:不用合并,因为此时数组已经完全有序。
阅读全文
0 0
- 51Nod1018 排序(C语言)
- 快速排序(C语言)
- 希尔排序(C语言)
- 堆排序(C语言)
- 归并排序(C语言)
- C语言--排序( 逢五断数)
- 归并排序(C语言)
- 快速排序(C语言)
- 归并排序(C语言)
- 归并排序(c语言)
- 快速排序(C语言)
- 堆排序(C语言)
- 插入排序(C语言)
- 快速排序(C语言)
- 排序算法(C语言)
- 冒泡排序(C语言)
- 选择排序(C语言)
- 排序(C语言实现)
- 微服务架构(Microservice Architecture)
- 服务器部署
- ps与pstree命令
- 身份证信息中间变星
- 设计模式解密(21)- 解释器模式
- 51Nod1018 排序(C语言)
- spring boot整合activemq rabbitmq
- 接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整
- HDU 1034 Candy Sharing Game(水题)
- ListView第一次加载的时候自动滚动到底部,滑动的时候新增数据时不会跳转至底部
- spiral-matrix I&II
- jsp页面增加天气和时间的显示
- Linux功耗管理(13)_Driver的电源管理
- JavaWeb项目中classpath详解