排序(sort,冒泡,快排)
来源:互联网 发布:java object 转int 编辑:程序博客网 时间:2024/05/16 10:30
1.sort();
最简单实用方便的排序。
直接实用即可,但必须有头文件;
#include<algorithm>using namespace std;
(1)直接对一维数组排序。
int a[100];//你要排序的数组int n;//数组内元素的个数;sort(a,a+n);//默认是从小到大排序
#include<stdio.h>#include<algorithm>using namespace std;int a[100];bool cmp(int x,int y)//外部函数,“>”是从大到小排序,“<”是从小到大排序;{ return x>y;}int main(){ int n; scanf("%d",&n); for(int i=0; i<n; i++) scanf("%d",&a[i]); sort(a,a+n,cmp);//这里是从大到小排序; for(int i=0; i<n; i++) printf("%d ",a[i]); return 0;}
(2)对结构体排序;
依照结构体中的某个元素(或多个元素)排序;
#include<stdio.h>#include<algorithm>using namespace std;struct node{ int x,y;} dis[100];bool cmp(node a,node b){ if(a.x==b.x)//如 果a,b的x元素相等,那么就以y元素为准; return a.y>b.y; return a.x>b.x;//否则以x元素为准;}int main(){ int n; scanf("%d",&n); for(int i=0; i<n; i++) scanf("%d%d",&dis[i].x,&dis[i].y); sort(dis,dis+n,cmp); for(int i=0; i<n; i++) printf("%d %d\n",dis[i].x,dis[i].y); return 0;}
2.冒泡排序
#include<stdio.h>int a[1000];int main(){ int n; scanf("%d",&n); for(int i=0; i<n; i++) scanf("%d",&a[i]); for(int i=0;i<n-1;i++) { for(int j=0;j<n-i-1;j++) { if(a[j]>a[j+1])//从小到大排序,换为“<”就是从大到小排序 { int f=a[j]; a[j]=a[j+1]; a[j+1]=f; } } } for(int i=0;i<n;i++) printf("%d ",a[i]); return 0;}
3.快速排序
#include<stdio.h>#include<string.h>int a[1000];void kuaisort(int l,int r)//以从小到大排序为例,从大到小类似;{ if(l>r) return ; int temp=a[l];//以在a[l]为基数 int i=l,j=r; while(i!=j)//直到i和j相同 { //找出右边小于a[l](即temp)的数; while(temp<=a[j]&&i<j)//一定要先找左边最大的,好好想想 j--; //找出左边大于a[l](即temp)的数; while(temp>=a[i]&&i<j) i++; if(i<j)//如果找到,进行交换 { int f=a[i]; a[i]=a[j]; a[j]=f; } } a[l]=a[i];//将基数(a[l])与最终找到的a[i]交换; a[i]=temp; //这样【l,i-1】的数都是小于等于temp的数,【i+1,r】的数都是大于等于temp的数 kuaisort(l,i-1);//将左边进行类似排序 kuaisort(i+1,r);//将右边进行类似排序}int main(){ int n; while(~scanf("%d",&n)) { memset(a,0,sizeof(a)); for(int i=0; i<n; i++) scanf("%d",&a[i]); kuaisort(0,n-1); for(int i=0; i<n; i++) printf("%d ",a[i]); printf("\n"); } return 0;}
阅读全文
0 0
- 排序(sort,冒泡,快排)
- 冒泡排序,快排
- 冒泡排序,快排
- 两种排序(快排+冒泡)
- 算法—排序(快排,冒泡)
- 交换排序总结(快排,冒泡)
- 排序(冒泡,选择,插入,快排,堆排)
- C语言排序(冒泡,选择,快排,插排)
- 排序算法之交换排序(冒泡和快排)
- 编程算法总结(冒泡排序,选择排序,快排)
- 排序介绍(选择+冒泡+快排+堆排序)
- 交换类排序:冒泡排序(优化)和快排
- sort(排序) qsort(快排) bsearch(二分查找)
- hd1862 EXCEL排序(结构体加sort快排)
- 三大排序算法实现(冒泡,选择,快排)
- 常用排序算法(冒泡、选择、归并、快排、插入)
- 链表排序(冒泡、插入、归并和快排)
- 单链表排序问题(冒泡/快排【前后指针法】)
- 文件操作笔记
- 关于Junit测试框架
- error: invalid initialization of non-const reference of type ‘*&’ from a temporary of type
- Jenkins之parameterized-trigger插件
- 学生管理小页面
- 排序(sort,冒泡,快排)
- Go命令
- 大爱无疆|CBK进军国际市场,为中国民企崛起而不懈努力
- [秩相关] Spearman秩相关系数计算及假设检验
- 直播App中Android酷炫礼物动画实现方案(下篇):SVGA由来与Lottie的对比
- 《视觉SLAM十四讲》内容摘要
- C语言三子棋的简单实现
- php 操作redis
- 集成分类模型简介