插入排序,你会插入吗?
Posted 爱码有道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了插入排序,你会插入吗?相关的知识,希望对你有一定的参考价值。
插入排序的典型场景是玩扑克牌,所有的人肯定都玩过。那么,我们如何做到手上的牌都是排好序的呢?让我们一起看看其中蕴含的插入技巧。
图解插入
接下来,针对这5位美女,我们的任务是对她们进行插入排序,分别让她们找到自己的位置。人生,也是一个不断找到自己位置和归宿的过程。
我们要安排A的位置,发现A比J大,所以把A放在J的右边,如下:
我们要安排10的位置,从最左边开始比较,发现10比J还小,所以放在J的左边,如下:
我们要安排K的位置,从最左边开始,发现K比10大,所以必须放在10的右边,进而又发现K比J大,所以继续放到J的右边,然后发现K比A小,所以放到A的左边,如下:
我们要安排Q的位置,从最左边开始,发现Q比10大,所以必须放在10的右边,进而又发现Q比J大,所以继续放到J的右边,然后发现Q比K小,所以就放到K的左边,如下:
到此为止,我们就完成了这5个美女的排序,这是一个不断插入正确位置的过程,这就是所谓的插入排序。
插入排序本质就是,针对每一个美女,找到她自己的位置,并插入这个位置,而这个找自己位置的过程,是从左到右不断比较来确定的。
编程实现
接下来,我们依据上述插入排序的思路,写出C++代码并进行测试验证,如下:
#include<iostream>
using namespace std;
void insertSort(int a[], int n)
{
int i, j, pivotKey;
for(i = 1; i < n; i++)
{
pivotKey = a[i];
for(j = i - 1; j >= 0 && a[j] > pivotKey; j--)
{
a[j + 1] = a[j];
}
a[j + 1] = pivotKey;
}
}
int main()
{
int a[] = {20, 50, 10, 40, 30};
insertSort(a, 5);
int i;
for(i = 0; i < 5; i++)
{
cout << a[i] << " ";
}
cout << endl;
return 0;
}
插入排序
的思路挺简单
。
我们也会一步一个脚印,争取每篇文章讲清讲透一件事,也希望大家阅读后有所收获,心情愉快。
你好,我是道哥,CSDN前30名,曾混迹于BAT大厂。公众号讲解计算机基础、网络、数据结构、算法、C++、Java等多方面的编程知识。欢迎点击名片关注道哥,感谢点赞和在看支持哦。