55.C++冒泡排序和选择排序

选择排序(Selection Sort)和冒泡排序(Bubble Sort)是两种基础的排序算法,虽然效率相对较低,但在学习排序算法的过程中非常有用。

目录

一、冒泡排序

什么是冒泡排序

示例代码

二、选择排序

什么是选择排序

示例代码


一、冒泡排序

什么是冒泡排序

冒泡排序每次都比较相邻的两个元素,如果它们的顺序错误,就交换它们。这样每一轮冒泡会使得一个最大(或最小)的元素"浮"到正确的位置。

所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。

示例代码

cpp 复制代码
#include <iostream>
using namespace std;

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]) {
                swap(arr[j], arr[j + 1]);
            }
        }
    }
}

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

    bubbleSort(arr, n);

    cout << "排序后的数组:";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;

    return 0;
}

二、选择排序

什么是选择排序

选择排序每次都从未排序的部分选择最小(或最大)的元素,然后将其放置在已排序部分的末尾。它的主要思想是不断地选择剩余元素中的最小值,并与当前未排序部分的第一个元素交换。

示例代码

cpp 复制代码
#include <iostream>
using namespace std;

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;
            }
        }
        if (minIndex != i) {
            swap(arr[i], arr[minIndex]);
        }
    }
}

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

    selectionSort(arr, n);

    cout << "排序后的数组:";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;

    return 0;
}
相关推荐
吃个糖糖10 分钟前
MFC 调用海康相机进行软触发
c++·数码相机·mfc
@我漫长的孤独流浪15 分钟前
最短路与拓扑(2)
数据结构·c++·算法
٩( 'ω' )و26038 分钟前
哈希表的实现01
数据结构·c++·哈希算法·散列表
靡樊1 小时前
网络基础概念
linux·服务器·网络·c++·学习
君鼎1 小时前
TCP/IP-——C++编程详解
网络·c++·tcp/ip
whoarethenext1 小时前
c/c++爬虫总结
c语言·c++·爬虫
一只努力学习的Cat.1 小时前
C++:二叉搜索树
开发语言·c++
<但凡.1 小时前
C++修炼:多态
开发语言·c++·算法
我爱写代码?1 小时前
Spark 集群配置、启动与监控指南
大数据·开发语言·jvm·spark·mapreduce
工藤新一¹1 小时前
深度理解指针(2)
c++·指针·c 语言·深度理解指针