首页 > 其他分享 >选择排序输出多轮学号

选择排序输出多轮学号

时间:2023-08-29 18:22:57浏览次数:27  
标签:输出 多轮 身高 学号 int 学生 排序 id man

题目描述

有n名学生从左往右排成一行站成队列,学号是1至n。给出这n名学生的身高,学号是i的学生的身高是h[i],所有学生的身高都不相同。现在进行n-1轮操作,第i轮操作由如下三个步骤构成:
第一步:从当前学生队列排在第i个位置的学生至排在最后一个位置的学生当中,选出身高最矮的学生,不妨假设是第k个位置的学生身高最矮。

第二步:当前队列第i个位置的学生和第k个位置的学生,他们交换位置。

第三步:从左往右,输出当前队列n个学生的学号。

解题思路

我们可以用一个结构体来存放每个学生的信息,一个结构体变量包括以下两部分内容:

  1. id,也就是学号
  2. h,身高(用于比较)
结构体定义
struct man{
	int id;
	int h;
};

剩下的就是排序了,注意:排序时比较的是arr[j].h而不是arr[j]

AC代码

#include<bits/stdc++.h>
using namespace std;
struct man{
    int id;
    int h;
};
void mySort(man arr[], int len) {
    int min;
    for (int i = 1; i < len; i++) {
        min = i;
        for (int j = i; j <= len; j++)
            if (arr[j].h < arr[min].h)
                min = j;
        swap(arr[i], arr[min]);
        for (int j = 1; j <= len; j++)
            cout << arr[j].id << " ";  //输出arr[j].id而不是arr[j].h
        cout << "\n";
    }
}
int main() {
    int n;
    cin >> n;
    man a[n + 1];
    for (int i = 1; i <= n; i++) {
        cin >> a[i].h;
        a[i].id = i;
    }
    mySort(a, n);
    return 0;
}

                          ---EOF---

标签:输出,多轮,身高,学号,int,学生,排序,id,man
From: https://www.cnblogs.com/algorithm-hu/p/17665582.html

相关文章

  • C4D Octane2023渲染设置及图像输出问题
    含阴影的透明png图含阴影的透明PNG图就要用到Octane渲染器做无缝背景方面的知识了,需要增加下面2步:01、场景里添加一个平面,调整平面大小使阴影全部呈现在平面上,平面位置刚好贴在对象下面。02、新建个oc漫射材质球,勾选材质通道公用里的阴影捕捉(OC3.07的版本叫蒙版),把材质球给到......
  • vue sort 排序
    Vue.js提供了多种实现排序的方式。下面列举了几种常见的排序方法及示例代码。 1、使用JavaScript原生的Array.prototype.sort()方法进行排序。这种方法适用于简单的数组排序需求。//在Vue组件中的方法中使用sort方法进行排序data(){return{myArray:[3,1,2,4......
  • visual studio 生成dll文件以及修改输出dll文件名称操作
    visualstudio生成dll文件以及修改dll文件名称Windows系统下VisualStudio可以通过.def文件创建dll。一、准备测试代码1.确定需要导出的函数,test.cpp文件中定义如下voidfun1(){ return;}voidfun2(){ return;}intmain(){ return0;}2.添加.def文件,一般添加到源文件下面。......
  • hive-四种排序
    数据准备200832.0200821.0200831.5200817.0201334.0201532.0201533.0201515.9201531.0201519.9201527.0201623.0201639.9201632.0建表createtableods_temperature(yearint,......
  • MySQL默认情况下的排序方式
    1、问题:今天在做开发时碰到了一个问题,使用了最简单的sql语句查询,条件中也只有一个条件,语句类似如下:SELECT*FROM`people`WHEREschool_id='1234';查询出的结果为3条,本以为应该按照数据库的插入顺序查出来,即按照主键ID的升序排列,但是得出的结果却不是,确实按照了其中一个字......
  • 插入排序:直接插入排序、折半插入排序、希尔排序的实现
    直接插入排序定义:直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排好序的有序表中,从而得到一个新的、记录数量增1的有序表。算法的代码:#include<stdio.h>#include<stdlib.h>voidprint_series(constintseries[],intlen){for(inti=0;......
  • 【Python-每日技巧】格式化输出的区别
    在Python中,字符串可以使用单引号(')或双引号(")括起来。如果字符串本身包含引号字符,你可以在字符串中使用反斜杠(\)进行转义。对于字符串中的美元符号($),它是一个普通的字符,不需要进行特殊处理。你可以直接在字符串中使用美元符号,如下所示:my_string="Thisisastringwitha$symbol."......
  • Oracle查看占用表空间最大的表(排序)
    selectt.owner,t.segment_name,t.tablespace_name,bytes/1024/1024/1024assizes,q.num_rows,t.segment_type fromdba_segmentst leftjoindba_tablesq   ont.segment_name=q.table_name  andt.owner=q.owner wheret.segment_type='TABLE'  andt.tab......
  • 解决datax输出文件随机数后缀问题
    原版的datax将数据库数据输出到指定文件时,会在该文件名后面加上一个随机数,不方便使用。这是datax源码中的问题,需要去https://github.com/alibaba/DataX下载源码并重新编译datax。参考datax源代码编译安装_程序员_IT序号网(itno.cn)修改./datax-master/txtfilewriter/src/main......
  • 快排及链表排序
    文章目录一、普通的快排二、链表的创建三、链表的冒泡排序四、链表快排五、链表归并排序一、普通的快排voidQuickSort(vector<int>&vec,intlow,inthigh){ intpivot=vec[low];//选择第一个元素作为枢纽元 //mid总是指向最后一个比枢纽元小的位置,当需要交换元素时,先......