美文网首页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++中级算法第二天(插入排序)

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