19 条题解
-
65
#include <bits/stdc++.h> using namespace std; int main() { int a[10005], n; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i < n; i++) { for (int j = i + 1; j <= n; j++) { if (a[i] > a[j]) { int t = a[j]; a[j] = a[i]; a[i] = t; } } } for (int i = 1; i <= n; i++) { cout << a[i] << " "; } return 0; }
-
7
#include <bits/stdc++.h> using namespace std; int main() { int a[10005], n; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i < n; i++) { for (int j = i + 1; j <= n; j++) { if (a[i] > a[j]) { int t = a[j]; a[j] = a[i]; a[i] = t; } } } for (int i = 1; i <= n; i++) { cout << a[i] << " "; } return 0; }
-
5
来复习一下吧~ 选择排序就是交换两个数的位置
</span>#include<bits/stdc++.h> using namespace std; int n,a[1001]; int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n-1;i++){ for(int j=i+1;j<=n;j++){ if(a[i]>a[j]){ int k=a[i]; a[i]=a[j]; a[j]=k; } } }for(int i=1;i<=n;i++) cout<<a[i]<<' '; return 0; }
-
3
#include <iostream> //我就不喜欢打万能头文件,怎么你了?——?C++,启动! using namespace std; int main() { int a[10005], n; //直接一个定义数组启动! cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i < n; i++) { for (int j = i + 1; j <= n; j++) { if (a[i] > a[j]) { int t = a[j]; a[j] = a[i]; a[i] = t; } } } for (int i = 1; i <= n; i++) { cout << a[i] << " "; } return 0; //是谁不喜欢return?!我想应该没有人吧。。。 }
-
2
过辣!
之前都不知道选择排序是什么,赶快去网上搜了一下。
就是结合这张图弄明白的:
#include <bits/stdc++.h> using namespace std; int main() { int n,nnin=114514,pos; scanf("%d",&n); int a[n+1]; for (int i=1;i<=n;i++)scanf("%d",&a[i]); for (int i=1;i<=n;i++) { nnin=114514; pos=i; for (int j=i;j<=n;j++) { if (a[j]<nnin){ nnin=a[j]; pos=j; } } a[pos]=a[i]; a[i]=nnin; printf("%d ",a[i]); } return 0; }
-
2
#include <bits/stdc++.h> using namespace std; int main() { int n, a[10005]; cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i < n; i++) for (int j = i + 1; j <= n; j++) if (a[i] > a[j]) swap(a[i], a[j]); for (int i = 1; i <= n; i++) cout << a[i] << " "; return 0; }
-
2
这里我用了较好理解的冒泡排序,比较简单:首先读取输入,然后嵌套循环,循环里面塞个if:如果前一个比下一个大就互换(注意了!别数组越界了!),最后一个for+输出,就完成了,十分简单是不是,“只要”30行哦!(可恶!不让我用sort),代码如下:
#include <bits/stdc++.h> using namespace std; long long n,a[100000000],b; int main(){ cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(a[j]>a[j+1]){ b=a[j]; a[j]=a[j+1]; a[j+1]=b; } } } for(int i=1;i<=n;i++){ cout<<a[i]<<" "; } return 0; }
-
2
#include <iostream> #include <cstdio> using namespace std; template <class T> void selection_sort(T arr[], int length) { for (int i = 1; i < length; ++i) { int min_idx = i; for (int j = i; j < length; ++j) { if (arr[j] < arr[min_idx]) { min_idx = j; } } if (arr[min_idx] < arr[i - 1]) { swap(arr[min_idx], arr[i - 1]); } } } int main() { int n; cin >> n; int arr[n]; for (auto& i : arr) { cin >> i; } selection_sort<int>(arr, n); for (auto i : arr) { cout << i << ' '; } return 0; }
(为什么往滴选择排序跟你们不一样???)
-
1
sort排序:
#include<bits/stdc++.h> using namespace std; int main(){ int b,a[1000],c;cin>>b; for(c=1;c<=b;c++)cin>>a[c]; sort(a+1,a+1+b); for(c=1;c<=b;c++)cout<<a[c]<<' '; return 0; }
结果:
✔️100 Accepted
# 状态分数 耗时 内存占用 #1→ ✔️Accepted 20 1ms 7.7 MiB #2→ 7.6 MiB #3→ 7.5 MiB #4→ 7.7 MiB #5→ 0ms -
1
这是正常的
#include<bits/stdc++.h> using namespace std; int n,a[1001]; int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n-1;i++){ for(int j=i+1;j<=n;j++){ if(a[i]>a[j]){ int k=a[i]; a[i]=a[j]; a[j]=k; } } }for(int i=1;i<=n;i++) cout<<a[i]<<' '; return 0; }
这是不正常的
#include <cstdio> using namespace std; 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 main() { int a[10005], n; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i < n; i++) { for (int j = i + 1; j <= n; j++) { if (a[i] > a[j]) { int t = a[j]; a[j] = a[i]; a[i] = t; } } } for (int i = 1; i <= n; i++) { cout << a[i] << " "; } return 0; }
-
1
-
1
#include <bits/stdc++.h> 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;i++) { int minj=i; for(int j=minj+1;j<=n;j++) { if(a[j]<a[minj]) { minj=j; } } int t=a[i]; a[i]=a[minj]; a[minj]=t; } for(int i=1;i<=n;i++) { cout<<a[i]<<" "; } return 0; }
- 1
信息
- ID
- 1471
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 2018
- 已通过
- 740
- 上传者