您的位置:首页 > 新闻 > 资讯 > 摄影作品欣赏网站推荐_公关到底做什么_优化大师电脑版官网_枣庄网站建设制作

摄影作品欣赏网站推荐_公关到底做什么_优化大师电脑版官网_枣庄网站建设制作

2025/6/5 18:24:31 来源:https://blog.csdn.net/2301_81893652/article/details/146405633  浏览:    关键词:摄影作品欣赏网站推荐_公关到底做什么_优化大师电脑版官网_枣庄网站建设制作
摄影作品欣赏网站推荐_公关到底做什么_优化大师电脑版官网_枣庄网站建设制作

一,引言

插入排序作为C语言学习中常见的七种排序之一,有这很强的教学意义,有助于提高同学们的代码能力,思维水平,下面我将详细介绍和讲解插入排序。

二,详细介绍

在一个数组中有一串乱序的数,插入排序就是首先将第一个位置看作有序,后面的第二个位置的数字和第一个进行比较,如果小于将第一个移动第二个的数的位置,如果大于则将该数字顶到这个位置。下面我将基于一组例子讲解:

如图这个数组中又八个数字,第一次排序将第一个位置(4)看作有序,将第二个位置(6)看作无序和前面进行排序 此时4小于6,则位置不懂,第一次排序结束。此时第一个位置和第二个位置(4)(6)为有序。

第二趟排序(4)(6)有序将第三个位置(2)看作无序,(2)和之前的数据进行比较,第一次比较(2)小于(6)则将第三个位置暂时用一个变量进行储存以防止数据丢失,将(6)向后平移到第三个位置(2)进行拷贝,此时第二个位置前面还有数据,继续和第一个位置(4)进行比较--(2)小于(4)则进行将(4)进行向后平移到原数组(6)的位置。最后(4)前面没有数据则将(2)拷贝在第一个位置(4)。完成第二趟排序。如图:

第三趟排序前三个数据有序,第四个无序和前三个进行比较遇到小的值停下或者走到开头停下

这个例子(6) 小于(7)所以直接停下。

第四趟排序前四个作为有序第五个数据和前四个比较,最后停在(2)的后面如图:

后面的数据一次类推直到最后一个数据结束这里不一一介绍。

三,代码实现

/直接插入排序
void InsertionSort(int* p, int bit)
{for (int i = 1; i < bit; i++){int j = i;int trm = p[j];while (j > 0){if (p[j - 1] < trm){break;}p[j] = p[j - 1];j--;}p[j] = trm;}
}

 while循环负责控制单次循环,for循环负责连接整个数组。

四,空间复杂度

由于这个排序并没有开辟额外的空间所以空间复杂度为O(1)。

五,时间复杂度

计算最坏情况,一共N个数据,第二个数据排列1次,第三个排列2次,第四个排列3次......第N个数据排列(N-1)次。综上时间复杂度为O(N^2)。

六,稳定性

判断该排序稳不稳定的依据是:相同数据经过排序相对位置有没有发生改变,若没有改变则证明该排序稳定,反之不稳定。此排序进行的是依次排序没有改变相对位置,所以直接插入排序是稳定排序。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com