(一)王道机试指南___排序

这篇博客详细介绍了冒泡排序和快速排序在考研机试中的应用。针对不同规模的数据,博主提供了算例分析,包括时间复杂度和空间复杂度的讨论,并给出了C++中sort函数的使用方法,特别强调了自定义比较函数和降序排序的实现方式。此外,还提到了结构体排序的方法,包括使用cmp函数和重载小于运算符。
摘要由CSDN通过智能技术生成

算例1

  • 题目描述
    在这里插入图片描述
  • 解题思路
    ①冒泡排序的时间复杂度为O(待排序个数的平方),在这里是O(n^2),且1<=n<=100,故此题数量级在万级别,符合要求
    ②冒泡排序的空间复杂度为O(1)【改】,没超过限制条件,符合要求
  • 解题代码
#include <stdio.h>

void main(){
   
	int n,A[100];
	while(scanf("%d",&n)!=EOF){
   //①
		for (int i=0;i<n;i++)
			scanf("%d",&A[i]);
		
		for (int i=0;i<n;i++)
			for (int j=i+1;j<n;j++){
   
					if (A[i]>A[j]){
   
						int temp;
						temp=A[j];
						A[j]=A[i];
						A[i]=temp;
					}
				}
		for (int i=0;i<n;i++)
			printf("%d ",A[i]);
		printf("\n");
		
	}
}
  • 注意点
    ①EOF与NULL的区别:
    EOF值为-1,只是普通的整型常量,一般用于输入函数,比如scanf, 或者各种读文件操作函数等。当返回EOF时代表读函数出错,达到了文件尾
    NULL值为0,是指针,一般用作指针操作,包括指针类型赋初始值,返回指针类型的函数在出错时的返回值等
    (经测试,两者在这里都可以)
    ②在VC6.0中,退出for循环后,指示变量i依旧可见
    ③若输入的是字符串,且用的是gets()方法读入,则while循环判断改成while(gets(字符串变量))

算例2

  • 题目描述
    将原题条件修改n的取值为1<=n<=10000
  • 解题思路
    时间复杂度已经查过了百万数量级,需要使用快速排序、归并排序等有更优复杂度的排序算法
    c++已经为我们编写了快速排序的库函数
  • 解题代码
#include <stdio.h></
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值