首页 > 编程语言 >c++ day 9

c++ day 9

时间:2023-07-14 22:12:06浏览次数:38  
标签:minIndex arr int void c++ ++ 排序 day

今天来学习选择排序

选择排序有多种方法 下面是方法一:

选择排序(Selection Sort)是一种简单但低效的排序算法。它的基本思想是在未排序的部分中选择最小(或最大)的元素,并将其放置在已排序部分的末尾。通过重复这个过程,直到所有元素都排好序为止。

下面是选择排序的C++实现示例:

#include <iostream>
#include <chrono>

void selectionSort(int arr[], int n) {
    for (int i = 0; i < n-1; ++i) {
        int minIndex = i;
        for (int j = i+1; j < n; ++j) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }
        // 交换最小元素和当前位置的元素
        int temp = arr[minIndex];
        arr[minIndex] = arr[i];
        arr[i] = temp;
    }
}

void printArray(int arr[], int n) {
    for (int i = 0; i < n; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
}

int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr) / sizeof(arr[0]);

    std::cout << "原始数组: ";
    printArray(arr, n);

    // 测量开始时间点
    auto start = std::chrono::high_resolution_clock::now();

    selectionSort(arr, n);

    // 测量结束时间点
    auto end = std::chrono::high_resolution_clock::now();

    std::cout << "排序后数组: ";
    printArray(arr, n);

    // 计算程序运行时间(毫秒为单位)
    auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
    std::cout << "程序运行时间: " << duration << " 毫秒" << std::endl;

    return 0;
}

结果如下 我有点怀疑是不是测试时间代码写错了

 下面是冒泡排序:

#include <iostream>

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n-1; ++i) {
        for (int j = 0; j < n-i-1; ++j) {
            if (arr[j] > arr[j+1]) {
                // 交换相邻元素
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

void printArray(int arr[], int n) {
    for (int i = 0; i < n; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
}

int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr) / sizeof(arr[0]);

    std::cout << "原始数组: ";
    printArray(arr, n);

    bubbleSort(arr, n);

    std::cout << "排序后数组: ";
    printArray(arr, n);

    return 0;
}

后面的知识建议看书

这几天一直在处理八字循环的包 可能写的有点少。

 

标签:minIndex,arr,int,void,c++,++,排序,day
From: https://www.cnblogs.com/jszs0013/p/17555123.html

相关文章

  • day5
    一、[闽盾杯2021]DNS协议分析1.打开流量,过滤dns类型,发现一些类似于base64的编码,并且有规律的出现2.全部提取,ZmxhZ3tlNjYyYWMxNTRjYTM3NmUxYzAwMWVlOGJiZTgxMzE4Yn0K,base64在线解码二、云1.1.1得到一个URL,进去后界面显示一个hint的链接1.2告诉我们整体是一个SpringBoot......
  • Python基础day45
    SQL注入问题importpymysql#连接MySQL服务端conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',password='123',database='db8_3',charset='utf8',autocommit=True#针对增......
  • day01
    变量变量的命名应该满足以下三个规范:1.变量的命名应该能反映变量值所描述的状态,切记不要用中文2.变量名可由字母、数字和下划线组成,但是不能以数字开头3.关键字不能声明为变量名以下为常见的几个变量名['and','as','assert','break','class','continue','def','del',......
  • [USACO23OPEN] Field Day S 田野日 - 动态规划
    提供一个简单的DP思路。##0x01重点信息可以先找出题目中的一些重点信息。-字符串中只有$G$与$H$。-$N$很大($2\leqN\leq10^5$),但$C$很小($1\leqC\leq18$)。##0x02思路既然字符串中只有$G$与$H$,我们不妨将字符串转化为二进制数字(如$1$代表$G$,$0$代......
  • C/C++学生宿舍管理系统[2023-07-14]
    C/C++学生宿舍管理系统[2023-07-14]课程名称:程序设计实践专业班级:学生姓名:学号:任课教师:张闻强学期:2022-2023学年第2学期课程报告任务书题目 学生宿舍管理系统主要内容 用C语言开发一个简单的学生宿舍管理系统。实现宿舍......
  • 【ChernoC++笔记】智能指针
    【44】【ChernoC++】【中字】C++的智能指针智能指针(Smartpointers)是C++中的一种特殊类型,用于管理动态分配的内存资源。智能指针通过封装指针,并在适当的时机自动释放内存,从而避免内存泄漏和悬空指针等常见问题。unique_ptr❓为什么叫做uniqueptr?unique_ptr不能复制:如果复......
  • C++将WSAGetLastError转换成字符串信息
    #include<iostream>#include<Windows.h>#include<WinSock2.h>std::stringGetLastErrorMessage(){DWORDerrorCode=WSAGetLastError();LPSTRerrorMessage=nullptr;DWORDresult=FormatMessageA(FORMAT_MESSAGE_ALL......
  • c++学习之extern C
    g++也可以编译c语言函数,1//filename:extern_c.cc23#include<iostream>45#ifdef__cplusplus6extern"C"{7#endif8//c语言语句开始9#include<stdio.h>1011intcmain(){12printf("hello");13return0;14}1......
  • 2023 长郡暑期集训 DAY-2 数学专题笔记
    2023长郡暑期集训DAY-2数学质数和约数质数是指除了\(1\)和它本身之外没有其他因数的自然数。质数判定判定单个自然数是否为质数,可以使用试除法,在这里不多描述。boolis_prime(intn){if(n<2)return0;//如果n小于2,不是质数,返回0for(inti=2;i<=n......
  • java学习day03:循环结构
    我在B站上大学......