排序算法
很早的时候就想把排序算法做一个小总结,正好遇到了这个以排序为核心的洛谷题目,做完了就顺便把常见的排序算法总结一下。
先看洛谷题目:P1068 [NOIP2009 普及组] 分数线划定
(链接在这里:戳一戳https://www.luogu.com.cn/problem/P1068):
其实这道题应该是蛮简单的题,就是一个排序然后输出,但有一个小坑就是<在分数相同的情况下,需要将id由小到大排一下>。
#include<iostream>
#include<cstdio>
using namespace std;
//使用结构体存放每个人的信息
typedef struct node{
int id;
int score;
}NODE;
NODE arr[5005];
NODE temp[2];//交换节点时使用的暂时节点
int m,n;
int score,num;//最终通过的分数和人数
int i,j;//循环变量
int main()
{
scanf("%d %d",&n,&m);
m=(int)m*1.5;//向下取整
for(i=1;i<=n;i++)scanf("%d %d",&arr[i].id,&arr[i].score);
/*选择排序*/
for(i=n;i>=1;i--)
{
for(j=1;j<i;j++)
{
if(arr[j].score<arr[j+1].score)swap(arr