专栏文章

11.16-东塘J1R-404

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min6migg
此快照首次捕获于
2025/12/01 21:25
3 个月前
此快照最后确认于
2025/12/01 21:25
3 个月前
查看原文

新知识

CPP
T617814冒泡排序模拟
算法思路:
  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 条评论,欢迎与作者交流。

正在加载评论...