首页 > 编程语言 >C++U3-第1课-基础排序(一)

C++U3-第1课-基础排序(一)

时间:2023-11-20 12:46:34浏览次数:45  
标签:int C++ 选择 最小值 U3 数组 冒泡排序 排序

学习目标

排序的概念 

 本阶段会学习的排序有

 冒泡排序概念

 第一轮比较,与交换

 

例题1:一趟交换

 例题2:多躺比较,冒泡排序

 

【题意分析】
进行n-1趟冒泡排序的过程,每一次输出当前一趟冒泡排序完的结果

【思路分析】
定义一个n,输入当前的n和储存n个数的数组

for循环的方式进行n(n-1)趟排序

如果当前的数大于后面的数,那么交换两数

for循环输出每一次数组的变化

【参考代码】
#include<iostream>
using namespace std;
int a[210];
int main(){
    //定义一个n,输入当前的n和储存n个数的数组 
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){//a[1]~a[n]
        cin>>a[i];
    }
    //for循环的方式进行n(n-1)趟排序 
    for(int i=1;i<=n-1;i++){//根据自己调整是否n-1 
        for(int j=1;j<=n-i;j++){//自己调整是否n-i 
        //如果当前的数大于后面的数,那么交换两数
            if(a[j]>a[j+1]){
                swap(a[j],a[j+1]);
            }    
        }
        //for循环输出每一次数组的变化 
        for(int i=1;i<=n;i++){
            cout<<a[i]<<" ";
        }
        cout<<endl;
    }
    return 0;    
}
View Code

 选择练习题

 

选择排序概念

 选择排序就是每一轮选择最小(或最大)的,然后和没排序部分的第一个进行交换;但选择排序,选择的过程是通过一个个比较得来的;先把没排序部分的第一个当做最小的(记录下标)然后和后面的比,如果有比第一个小的,那么记录新的小值的下标,然后再用新的最小值继续往后比,重复这个过程,就可以比较出最小值,然后交换到未排序部分第一个位置,然后进行多轮,就实现了全部排序;

例题1,一趟选选择

多轮选择动态图;

 

 选择排序代码:

【题意分析】
我们当前需要对数组进行从小到大排序

【思路分析】
可以使用选择排序

定义一个变量为最小值,假设最小值为第一个,然后将当前变量用for循环的方式与每一个数对比,找出最小

再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。

重复第二步,直到所有元素均排序完毕。

最后输出排序好的数组

【参考代码】
#include <iostream>
using namespace std;

int a[1010];

int main() {
    ////定义n和数组a,并且将n和n个数输入
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    //定义一个变量为最小值,假设最小值为第一个,然后将当前变量用for循环的方式与每一个数对比,找出最小
    for (int i = 1; i <= n-1; i++) { 
        int k = i;  // 最小值的下标 
        for (int j = i; j <= n; j++) {  // 找 a[i]~a[n] 的最小值 
            if (a[j] < a[k]) {
                k = j;    
            } 
        } 
        // 将 a[i]~a[n] 的最小值和 a[i] 交换 
        swap(a[k], a[i]);
    }
    //最后输出排序好的数组
    for (int i = 1; i <= n; i++) {
        cout << a[i] << " ";
    }
    return 0;    
}
View Code

 

标签:int,C++,选择,最小值,U3,数组,冒泡排序,排序
From: https://www.cnblogs.com/jayxuan/p/17843679.html

相关文章

  • C++使用OpenSSL实现AES-256-CBC加密解密实例----亲测OK
    摘自:https://blog.csdn.net/GerZhouGengCheng/article/details/106103039//AesUtil.h#ifndef__AES_UTIL_H__#define__AES_UTIL_H__#ifdef__cplusplus//告诉编译器,这部分代码按C语言的格式进行编译,而不是C++的extern"C"{#endifstringUTIL_aes_cbc_e......
  • openssl做HMAC实例(C++)----自测OK
    摘自:https://blog.csdn.net/mijichui2153/article/details/1047414601、HMAC简介(1)MAC(MessageAuthenticationCode,消息认证码算法),可以将其认为是含有秘钥的散列(Hash)函数算法;即兼容了MD和SHA算法,并在此基础上加上了秘钥。因此MAC算法也经常被称作HMAC算法。当然HMAC就是“基......
  • openssl做HMAC实例(C++)原文
    摘自:https://blog.csdn.net/mijichui2153/article/details/1047414601、HMAC简介(1)MAC(MessageAuthenticationCode,消息认证码算法),可以将其认为是含有秘钥的散列(Hash)函数算法;即兼容了MD和SHA算法,并在此基础上加上了秘钥。因此MAC算法也经常被称作HMAC算法。当然HMAC就是“基......
  • 一万五千字C++STL【容器】详解(转载)
    一、什么是容器?所谓容器,就是可以承载,包含元素的一个器件,它是STL六大组件之一,是容器、算法、迭代器中最重要也是最核心的一部分。二、STL中各大容器的结构与分类2.1顺序性容器2.1.1什么是顺序性容器?顺序性容器就是将一组具有相同类型的元素以严格的线性形式组织起来2.1.2......
  • [实验任务一]:JAVA和C++常见数据结构迭代器的使用
    信1305班共44名同学,每名同学都有姓名,学号和年龄等属性,分别使用JAVA内置迭代器和C++中标准模板库(STL)实现对同学信息的遍历,要求按照学号从小到大和从大到小两种次序输出学生信息。实验要求:1. 搜集并掌握JAVA和C++中常见的数据结构和迭代器的使用方法,例如,vector,list,map和set等......
  • C++ merge()函数
    merge()函数用于将2个有序序列合并为1个有序序列,前提是这2个有序序列的排序规则相同(要么都是升序,要么都是降序)。并且最终借助该函数获得的新有序序列,其排序规则也和这2个有序序列相同。merge()函数支持自定义规则排序,merge()有两种语法格式//以默认的升序排序作为排......
  • Java学习—计数排序
    计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。1.计数排序的特征当输入的元素是n个0到k之间的整数时,它的运行时间是Θ(n+k)。计数排序不是比较排序,排序的速度快于任......
  • DX后台截图C++实现代码
    DX后台截图C++实现代码文章仅发布于https://www.cnblogs.com/Icys/p/DXGI.html和知乎上。传统的GDIAPI(BitBlt)虽然可以完美的完成后台截图的任务,但是归根结底效率还是太低。直接使用DXGI方法截图只能完成前台窗口的截图,而DXHOOK的截图方法平添风险,以及很多场景不现实。......
  • C++AVL树和红黑树的模拟实现
    前言在二叉树的基础上,为了让搜索更加快捷,出现的二叉搜索树,二叉搜索树规定,二叉树的左子树的值一定都小于其父亲节点的值,所有右子树的值一定都大于其父亲节点的值,这样就保证了在查找某一个数据时,让时间复杂度最低为变为logn。一、二叉树两种特殊的二叉树1.满二叉树满二叉树每层的节......
  • 简单选择排序
    目录基本原理举例示例代码总结简单选择排序VS堆排序简单选择排序VS冒泡排序本文主要介绍简单选择排序的基本原理、具体例子,以及代码实现。基本原理简单选择排序的基本原理是:在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)......