32 条题解
-
17
题目要求:对数组元素进行从小到大依次排序。
题目比较简单带大家复习一下sort函数。
时间复杂度:n*lg(n). sort(start,end,cmp) 1.第一个参数是要排序数组的起始地址
2.第二个参数是数组结束地址的下一位
3.第三个是排序的方法,可不填,默认升序 sort()函数的强大之处在于与cmp函数的使用,可以解决数组、字符串、结构体的排序问题等。
本题代码如下:
for (int i=1;i<=n;i++) { cin>>a[i]; //输出 } sort(a+1,a+n+1); //直接排序(注意输入是从1开始的,因此需要地址加一) for (int i=1;i<=n;i++) { cout<<a[i]<<" "; //输出 }
题解不易,动动小手点个赞🎈
-
7
本题其实非常简单,但我如果不漏点本事就成搞笑男了!
最简sort:
#include<bits/stdc++.h> //sort using namespace std; int main(){ int n; cin>>n; int x[n]; for(int i=0;i<n;i++){ cin>>x[i]; } sort(x,x+n); for(int i=0;i<n;i++){ cout<<x[i]<<" "; } return 0; }
较难冒泡:
#include<bits/stdc++.h> //冒泡排序 using namespace std; int a[20]; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=n;i++){ for(int j=1;j<=n-i;j++){ if(a[j]>a[j+1]) swap(a[j],a[j+1]); } } for(int i=1;i<=n;i++){ cout<<a[i]<<" "; } return 0; }
3星选择:
#include<bits/stdc++.h> //选择排序 using namespace std; int a[20]; int main(){ int n;cin>>n; int ma; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n-1;i++){ ma=1; for(int j=1;j<=n-i+1;j++){ if(a[j]>a[ma]){ ma=j; } } if(ma!=n-i+1) swap(a[ma],a[n-i+1]); } for(int i=1;i<=n;i++){ cout<<a[i]<<" "; } return 0; }
5星插入:
#include<bits/stdc++.h> //插入排序 using namespace std; int a[20]; int main(){ int n;cin>>n;int i,j; for(i=1;i<=n;i++) cin>>a[i]; for(i=2;i<=n;i++){ for(j=1;j<=i;j++){ if(a[j]>=a[i]){ break; } } if(j!=i){ int x=a[i]; for(int k=i-1;k>=j;k--){ a[k+1]=a[k]; } a[j]=x; } } for(int i=1;i<=n;i++){ cout<<a[i]<<" "; } return 0; }
(点个赞吧!)
-
2
#include <cstdio>//这是快速排序 using namespace std;//时间复杂度为O(NlogN) int n,book[100005]; void quicksort(int l,int r) { int i,j,t,temp; if(l>r) return; temp=book[l]; i=l; j=r; while (i!=j) { while (book[j]>=temp && i<j) { j--; } while (book[i]<=temp && i<j) i++; if(i<j) { t=book[i]; book[i]=book[j]; book[j]=t; } } book[l]=book[i]; book[i]=temp; quicksort(l,i-1); quicksort(i+1,r); return; } int main() { int i,j; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&book[i]); quicksort(1,n); for(i=1;i<=n;i++) printf("%d ",book[i]); return 0; }
-
1
//必须来一个快排 #include <bits/stdc++.h> using namespace std; int a[1005],n; void quicksort(int left,int right) { int i,j,t,temp; if (left>right) return ; temp=a[left]; i=left; j=right; while(i!=j) { while(a[j]>=temp && i<j) j--; while(a[i]<=temp && i<j) i++; if (i<j) { t=a[i]; a[i]=a[j]; a[j]=t; } } a[left]=a[i]; a[i]=temp; quicksort (left,i-1); quicksort (i+1,right); return ; } int main() { scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&a[i]); quicksort (1,n); for (int i=1;i<=n;i++) printf("%d ",a[i]); return 0; }
-
1
sort() 库:algorithm 快排函数 函数用法:
sort(a,a+n)//a代表数组,n代表长度
code:
#include <iostream> #include <algorithm> using namespace std; int num[10]; int main() { int n; cin >> n; for (int i = 0; i < n; i++) cin >> num[i]; sort(num, num + n); for (int j = 0; j < n; j++) cout << num[j] << ' '; return 0; }
-
1
#include <iostream> using namespace std; int n, a[1005]; int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i <= n - 1; i++) { int maxj = i; for (int j = maxj+1; j <= n; j++) { if (a[j]<a[maxj]) { maxj=j; } } int t = a[i]; a[i] = a[maxj]; a[maxj] = t; } for (int i = 1; i <= n; i++) { cout << a[i] << " "; } return 0; }
-
1
尝试不用sort函数去解决本题(呃 · · · · · · 后果可想而知)
#include <iostream> using namespace std; int main() { //选择排序 int n, i, j, min, t; cin >> n; int a[n]; for (i = 0; i < n; i++) { cin >> a[i]; } for (i = 0; i < n - 1; i++) { min = i; for (j = i;j < n;j++) { if (a[j] < a[min]) { min = j; } } if (min != i) { t = a[min]; a[min] = a[i]; a[i] = t; } } for (i = 0; i < n; i++) { cout << a[i] << ' '; } return 0; }
-
0
这道题很简单,sort函数是个好东西!上代码!
#include <bits/stdc++.h> using namespace std; int n, a[100000]; int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } sort(a + 1, a + n + 1); for (int i = 1; i <= n; i++) { cout << a[i]; } return 0; }
如果你也是这么编的,你将会得到一个“哇(WA)!” 因为输出时需空格!!!
AC代码:
#include <bits/stdc++.h> using namespace std; int n, a[100000]; int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } sort(a + 1, a + n + 1); for (int i = 1; i <= n; i++) { cout << a[i] << " "; } return 0; }
请注意必须抄袭题解,写题解需要只放代码,不能加上你的思路或代码注释。抄袭题解一经发现直接成绩满分!🚀️ 🚀️ 🚀️
信息
- ID
- 2
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 3
- 标签
- 递交数
- 1505
- 已通过
- 817
- 上传者