第六章 排序-冒泡,选择,插入排序

Posted xwxz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六章 排序-冒泡,选择,插入排序相关的知识,希望对你有一定的参考价值。

哔哩哔哩数据结构讲解地址:https://space.bilibili.com/356198029

本代码视频讲解地址:https://www.bilibili.com/video/av74560022

冒泡排序

#include<iostream>
using namespace std;
void bubble(int[], int);

int main()
{
    int array [] = {55,2,6,4,32,12,9,73,26,37};

    int len = sizeof(array) / sizeof(int);
    cout<<"输入的原始序列:  ";
    for(int i=0; i<len; i++) // 输出原序列
        cout<<array[i]<<",";
    cout<<endl<<endl;
    cout<<"  ----冒泡排序过程如下---- " << endl;
    bubble(array,len); // 调用排序函数
    return 0;
}

void bubble(int a[], int size)
{
    // 冒泡排序具体的过程
    // 两个for循环,一个控制轮数,一个控制每轮比较的次数
    for(int pass=1; pass<size; pass++) // 比较的 size - 1 轮
    {
        for(int i=0; i<size-pass; i++) // 每轮比较的次数: size-pass
            if(a[i+1]<a[i])
            {
                swap(a[i],a[i+1]);
            }

        for(int j=0; j<size; j++)
            cout<<a[j]<<",";
        cout<<endl;
    }
}

选择排序

//
// Created by Tusdao_xxw on 2019/11/10.
//
# include<iostream>
using namespace std;
void selectSort(int[], int);

int main()
{
    int array [] = {55,2,6,4,32,12,9,73,26,37};

    int len = sizeof(array) / sizeof(int);

    cout<<"输入的原始序列:  ";
    for(int i=0; i<len; i++) // 输出原序列
        cout<<array[i]<<",";
    cout<<endl<<endl;

    cout<<"  ----选择排序开始---- " << endl;
    selectSort(array,len); // 调用排序函数
    return 0;
}
void selectSort(int a[], int size)
{
    int minIndex, temp;
    for(int i=0; i<size; i++)
    {
        minIndex=i;
        for(int j=i;j<size; j++)
        {
            if(a[minIndex]>a[j])
            {
                minIndex = j;
            }
        }
        temp = a[i];
        a[i] = a[minIndex];
        a[minIndex] = temp;
        for(int j=0; j<size; j++)
            cout<<a[j]<<",";
        cout<<endl;
    }
}

插入排序

#include<iostream>
using namespace std;
void isort(int[], int);

int main()
{
    int array [] = {55,2,6,4,32,12,9,73,26,37};

    int len = sizeof(array) / sizeof(int);

    cout<<"输入的原始序列:  ";
    for(int i=0; i<len; i++) // 输出原序列
        cout<<array[i]<<",";
    cout<<endl<<endl;

    cout<<"  ----插入排序开始---- " << endl;
    isort(array,len); // 调用排序函数
    return 0;
}

void isort(int a[], int size)
{
    int inserter, index;
    // 插入排序过程
    for(int i=1; i<size; i++)
    {
        inserter = a[i]; // 待插入的元素
        index = i - 1;  // 与待插入元素比较的元素下标,前i个元素已经排好顺序
        while(index>=0 && inserter < a[index]) // 找位置关键操作
        {
            a[index + 1] = a[index];
            index--;
        }
        a[index + 1] = inserter;
        for(int j=0; j<size; j++)
            cout<<a[j]<<",";
        cout<<endl;
    }
}

 

以上是关于第六章 排序-冒泡,选择,插入排序的主要内容,如果未能解决你的问题,请参考以下文章

数据结构笔记

排序算法之冒泡选择插入排序(Java)

排序算法之冒泡选择插入排序(Java)

三大基础排序算法(冒泡排序,选择排序,插入排序)

排序算法学习(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序)

[leetcode]排序算法(冒泡排序,选择排序,插入排序,快速排序,计数排序)