专栏文章
11.16-东塘J1R-404
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min6migg
- 此快照首次捕获于
- 2025/12/01 21:25 3 个月前
- 此快照最后确认于
- 2025/12/01 21:25 3 个月前
新知识
CPPT617814冒泡排序模拟
算法思路:
1:通过对待排序序列从前向后(从下标较小的元素开始)依次对相邻两个元素的执行两两比较
2:若发现前一个数大于后一个数则交换,使值较大的元素,逐渐从前移向后部
3:时间复杂度:O(n*(n-1)/2)(扫描n-1轮)
for(int i=1;i<=n;i++){
for(int j=1;j<=n-1;j++){
if(a[j]>a[j+1])swap(a[j],a[j+1]);
}
}
T617819选择排序模拟
算法思路:
1:将数组分为“已排序”两部分
2:每轮从排序选择最小元素,放到已排序部分的末尾
3:时间复杂度:O(n^2)(始终需要扫描剩余元素)
for(int i=1;i<=k;i++){
int idx=i;
for(int j=1;j<=n;j++){
if(a[j]<a[idx])idx=j;
}
swap(a[i],a[idx]);
}
T617814 冒泡排序模拟
思路
先定n,K和a[i](注意要开long long,因为题目说了范围是10^7),然后输入n,k,a[i],再用上面第一个的代码,最后在那个代码中for循环中用循环输入。
代码
CPP#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e7+5;
ll n,K;
ll a[N];
int main(){
cin>>n>>K;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int k=1;k<=K;k++){
for(int i=1;i<=n-1;i++){
if(a[i]>a[i+1]){
swap(a[i],a[i+1]);
}
}
for(int i=1;i<=n;i++)cout<<a[i]<<" ";
cout<<endl;
}
return 0;
}
T617819 选择排序模拟
思路
先定n,k,a[i],然后输入n,k,a[i],再把上面第二个代码套上去,最后在那个代码中的for循环里在用一个for循环来输出。
代码
CPP#include<bits/stdc++.h>
#define ll long long
using namespace std;
int a[1010];
int main(){
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=k;i++){
int idx=i;
for(int j=i;j<=n;j++){
if(a[j]<a[idx])idx=j;
}
swap(a[i],a[idx]);
for(int i=1;i<=n;i++)cout<<a[i]<<' ';
cout<<endl;
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...