课堂总结: 对于排序算法的灵活使用

1、按整数大小排序,附带排序对应的名称或者编号。

2、第一排序条件和第二排序条件的设置。

3、字符串排序,首字符ASCII大小,字符串长度,字符串字典序。

课堂例题: image image image

作业: 1、最大偶数 image image

2、最大整数 image image

3 条评论

  • @ 2024-3-16 13:36:37

    image image

    • @ 2024-3-15 21:43:21

      image

      • @ 2024-3-9 15:42:26
        #include<bits/stdc++.h>
        using namespace std;
        
        int main(){
        	//1、分析题意
        	//已知:报名人数、录取人数、报名编号和笔试成绩
        	//未知:晋级面试分数线---》排名:录取人数*1.5的向下取整的成绩
        	//未知:晋级人数:计数看有多少人分数大于等于分数线
        	//未知:晋级人员的报名号和
        	//中间变量:有排名的成绩数组和报名编号数组
        	
        	//2、定义变量
        	int n,m;//报名人数、录取人数
        	int a[5010],b[5010];//报名编号和笔试成绩
        	int c,d=0;// 晋级面试分数线,晋级人数
        	
        	//3、输入
        	cin>>n>>m;
        	for(int i=1;i<=n;i++)cin>>a[i]>>b[i];
        	
        	//4、分步骤运算得到未知变量
        	//4.1 按照笔试成绩从大到小排序,冒泡
        	for(int i=1;i<=n-1;i++)
        		for(int j=1;j<=n-i;j++){
        			if(b[j]<b[j+1]){
        				swap(b[j],b[j+1]);
        				swap(a[j],a[j+1]);
        			}else if(b[j]==b[j+1]){
        				if(a[j]<a[j+1]){
        					swap(b[j],b[j+1]);
        					swap(a[j],a[j+1]);
        				}
        			}
        		}
        	
        	//4.2 求录取分数线
        	c = b[m*150/100];
        	
        	//4.3 求录取人数
        	for(int i=1;i<=n;i++){
        		if(b[i]>=c)d++;
        		else break;
        	}
        	
        	//5、输出
        	//5.1 输出录取分数线和录取人数
        	cout<<c<<" "<<d<<endl;
        	//5.2 输出进入面试人的编号和成绩,按成绩从高到低排序
        	for(int i=1;i<=d;i++)cout<<a[i]<<" "<<b[i];
        
        	return 0;
        }
        
        • 1