算法·排序
2025-06-08 16:37:46
发布于:北京
7阅读
0回复
0点赞
相信看完语法篇的人都在等着我肝完。今天算法部分正式开课!
今天讲的是......排序。
排序是什么?排序是指把一些无序的元素变有序。排序可以分为升序和降序(见https://www.acgo.cn/discuss/study/43054)。排序有很多种排序方法。常见的有冒泡排序,选择排序,桶排序。插入排序。快速排序,sort排序(见https://www.acgo.cn/discuss/study/43054)等等等等。
这次我会先讲两种排序方法,下次每个贴讲一个(下次一定)
冒泡排序
假设我们有N个元素,这些元素是未排序的,现在我们要进行排序。
先锁定元素a1和a2,判断a1是否大于a2。如果是,可以......
先创建一个变量X,再把a1赋值给X,a2赋值给a1,最后在把X赋值给a2。
或者用swap(a[1],a[2])也可以
具体代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,x[210];//表示数组x有多少元素
cin>>n;
for(int i=0;i<n;i++){
cin>>x[i];
}
for(int i=0;i<n-1;i++){
if(x[i]>x[i+1]){//判断前一项是否大于后一项
swap(x[i],x[i+1]);//交换元素
}
}
for(int i=0;i<n;i++){
cout<<x[i]<<' ';
}
return 0;
}//本题AC代码
选择排序
选择排序就是有 n 个数,将这 n 个数经过一趟选择将最小值和第 1 个元素交换。
具体代码如下:
#include <bits/stdc++.h>
using namespace std;
int n;
int a[105];
int main() {
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
int k=1;
for(int j=2;j<=n;j++){
if(a[j]<a[k])k=j;
}
swap(a[1],a[k]);
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
打个广告:
TN本人的团队:https://www.acgo.cn/application/1841065533963177984
这里空空如也
有帮助,赞一个