美文网首页C语言数据结构和算法分析
C++中级算法第二天(插入排序)

C++中级算法第二天(插入排序)

作者: 权的小树洞 | 来源:发表于2019-03-16 17:54 被阅读36次

昨天太忙了就忘记了发这一篇文章了,所以今天赶紧的补上了这一章
今天要写的是插入排序,老规矩,我们先讲一下什么是

插入排序?

每次从没有排序的数据列表中取出第一个元素,把它插入到有序表的合适位置, 使有序表仍然有序。
演示图

这张图就是小编画的一张图,虽然简陋,但是我们还是很容易的了解插入排序的原理,其实也很简单,就是我们讲后面小的数据往前面排,将大的数据向后挤,就是所谓的插入排序了,多跑几次数据,就能将所有的数据排完
分析:
1.每次排序将有序列表选择性向右排序
2.确定插入数据的位置
我们做一个循环,假如后位的数据小于前位的数据,则我们后位的数据是需要往前排序的,这个是很简单做到的,然后就是我们需要将已经排好了序的数据,向后移动,这个移动也是需要判断的,当移动到,比后位数据小的时候就不需要移动了,然后将这个后位数据插入到有序列表里面去,我们就完成了一次的插入排序,等这个循环结束,我们就可以将所有的数据排好

#include<iostream>

using namespace std;

void print(int a[], int n) {

    for (int j = 0; j < n; j++) {
        cout << a[j] << "  ";
    }

    cout << endl;

    return;
}

void insert_Sort(int array[], int n) {

    for (int i = 1; i < n; i++) {

        if (array[i]/*后位*/ < array[i - 1]/*前位*/) {

            int temp = array[i]/*后位*/;
            int k/*前位*/ = i - 1;

            for (int j = k; j >= 0 && temp < array[j]; j--) {

                array[j + 1] = array[j];
                k--;
                print(array, 8);
            }

            array[k + 1] = temp;//插入第i位的值
        }
    }
}

int main() {

    int a[8] = { 3,1,5,7,2,4,9,6 };
    cout << "初始值:";

    for (int j = 0; j < 8; j++) {
        cout << a[j] << "  ";
    }

    cout << endl << endl;
    insert_Sort(a, 8);
    cout << "排序后:";
    print(a, 8);

    return 0;
}

下一个排序,马上就来了哦
请支持我,每天更新不同的算法!
谢谢你们的支持!

相关文章

  • C++中级算法第二天(插入排序)

    昨天太忙了就忘记了发这一篇文章了,所以今天赶紧的补上了这一章今天要写的是插入排序,老规矩,我们先讲一下什么是 插入...

  • 排序算法详细代码实现

    算法分类 算法时间复杂度 选择排序 插入排序 C++实现 Python实现 冒泡排序 Python实现 归并排序 ...

  • 算法-插入排序

    算 法:插入排序算法时间复杂度: 插入排序算法描述 插入排序伪代码 插入排序实现 插入排序算法概述 插入排...

  • freeCodeCamp 旅途9 - 算法中级

    算法中级:范围内的数字求和 算法中级:区分两个数组 算法中级:瞄准和消灭 算法中级:罗密欧与朱丽叶 算法中级:短线...

  • python 冒泡排序和选择排序算法

    插入排序算法 冒泡排序算法

  • C#排序算法之希尔排序

    希尔排序,也叫缩小增量排序,是直接插入排序算法的一种更高效的版本,适合中级数量级的排序,属于非稳定排序算法。 原理...

  • c算法O(n)^2(一)

    选择排序 插入排序 优化插入排序算法

  • 各种排序算法实现

    C++实现各种排序算法。上张图。 自定义的swap函数。 冒泡排序 插入排序 希尔排序 选择排序 快速排序 归并排...

  • Chapter 2 Foundation of Algorith

    Chapter 2 插入排序 线性查找 选择算法 归并排序算法 二分查找算法 冒泡排序 插入排序 循环不...

  • 算法入门——插入排序、快速排序

    上篇文章学习了算法入门——冒泡排序、选择排序,这篇文章我们学习算法入门——插入排序。 插入排序 插入排序是在一组列...

网友评论

    本文标题:C++中级算法第二天(插入排序)

    本文链接:https://www.haomeiwen.com/subject/tipkmqtx.html