瀑布流资源网站模板wordpress新建页面显示数据
news/
2025/10/7 21:45:33/
文章来源:
瀑布流资源网站模板,wordpress新建页面显示数据,网上推广是什么意思,qq群引流推广平台免费一、插入排序 插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴#xff0c;但它的原理应该是最容易理解的了#xff0c;因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法#xff0c;它的工作原理是通过构建有序序列#xff0c;对于未排…一、插入排序 插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴但它的原理应该是最容易理解的了因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法它的工作原理是通过构建有序序列对于未排序数据在已排序序列中从后向前扫描找到相应位置并插入。 1.实现思路:
1.将第一待排序序列第一个元素看做一个有序序列。
2.把第二个元素到最后一个元素当成是未排序序列。
3.从头到尾依次扫描未排序序列将扫描到的每个元素插入有序序列的适当位置。如果待插入的元素与有序序列中的某个元素相等则将待插入元素插入到相等元素的后面。
动图演示 动图来源:1.3 插入排序 | 菜鸟教程 (runoob.com)
代码实现
void InsertSort(int* a, int n)
{for (int i 0; i n-1; i){// [0, end] end1int end i;int tmp a[end 1];while (end 0){if (tmp a[end]){a[end 1] a[end];--end;}else{break;}}a[end 1] tmp;}
} 二、希尔排序
1.来源 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DLShell于1959年提出而得名。希尔排序是记录按下标的一定增量分组对每组使用直接插入排序算法排序随着增量逐渐减少每组包含的关键词越来越多当增量减至1时整个文件恰被分成一组算法便终止。 ————《百度文库》 2.基本思想 先将整个待排元素序列分割成若干个子序列由相隔某个“增量”的元素组成的分别进行直接插入排序然后依次缩减增量再进行排序待整个序列中的元素基本有序增量足够小时再对全体元素进行一次直接插入排序。 因为直接插入排序在元素基本有序的情况下接近最好情况效率是很高的因此希尔排序在时间效率上比前两种方法有较大提高。 3.实现方式 ① 先取一个小于n的整数d1作为第一个增量把文件的全部记录分成d1个组。 ② 所有距离为d1的倍数的记录放在同一个组中在各组内进行直接插入排序。 ③ 取第二个增量d2小于d1重复上述的分组和排序直至所取的增量dt1(dt小于dt-l小于…小于d2小于d1)即所有记录放在同一组中进行直接插入排序为止。 4.希尔排序的特性总结 1. 希尔排序是对直接插入排序的优化。 2. 当 gap 1 时都是预排序目的是让数组更接近于有序。当 gap 1 时数组已经接近有序的了这样就 会很快。这样整体而言可以达到优化的效果。我们实现后可以进行性能测试的对比。 3. 希尔排序的时间复杂度不好计算因为 gap 的取值方法很多导致很难去计算因此在好些树中给出的 希尔排序的时间复杂度都不固定 《数据结构 (C 语言版 ) 》 --- 严蔚敏 由于动图没找到,这里我就画图描述一下吧,.
现在我们有如下数据: 我们先选
gap8;
第一趟排序: 然后
gapgap/31---gap3
第二趟排序: 接着
gapgap/31---gap2
第三趟排序: 最后
gapgap/31---gap1 代码实现:
void ShellSort(int* a, int n)
{int gap n;while (gap 1){gap gap/3 1;for (int i 0; i n - gap; i){int end i;int tmp a[end gap];while (end 0){if (tmp a[end]){a[end gap] a[end];end - gap;}else{break;}}a[end gap] tmp;}}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930876.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!