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

哔哩哔哩数据结构讲解地址: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;
    }
}

 

posted @ 2019-11-15 16:50  小尾学长  阅读(184)  评论(0编辑  收藏  举报