news 2026/5/13 10:03:28

插入排序,选择排序,希尔排序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
插入排序,选择排序,希尔排序

一、插入排序

从头开始依次选取一个元素,和他前面的数比较,

先把值存为 c ,这样就不用交换值了

若比前面的元素大,就让 qq + 1的位置的值改为前面的数,qq 往前移一位

若前面的数小,就把 qq + 1的位置的值改为c

void cha_ru(int* arr, int n) { for (int q = 1; q < n; q++) { int c = arr[q]; int qq = q-1; while (qq >= 0) { if (arr[qq] > c) { arr[qq + 1] = arr[qq]; qq--; } else { break; } } arr[qq + 1] = c; } return; }

二、选择排序

从前往后遍历,最小的放前面,最大的放后面,缩小范围,

若最大的数在最前面,判断一下,因为最小的数交换时把最大的数换到其他位置了

很简单。。。

void xuan_ze(int* a, int n) { int begin = 0, end = n - 1; while (begin < end) { int mini = begin, maxi = begin; for (int i = begin + 1; i <= end; ++i) { if (a[i] > a[maxi]) { maxi = i; } if (a[i] < a[mini]) { mini = i; } } int c = a[begin]; a[begin] = a[mini]; a[mini] = c; if (maxi == begin) { c = a[mini]; a[mini] = a[end]; a[end] = c; } else { c = a[maxi]; a[maxi] = a[end]; a[end] = c; } ++begin; --end; } }

三、希尔排序

分为两步

1.预排序

2.插入排序

预排序的目的是

使数组更加接近有序

步骤

设置一个变量值gap

把数组分为gap组

每个元素和他相距 gap-1 距离的元素为一组,就是+gap或-gap得到同组元素

通过插入排序把每组数据顺序排列

最后预排序完成,最后一遍插入排序,得到有序数组

void Shell_pai(int* arr, int n) { int gap = n; while (gap > 1) { gap = gap / 3 + 1; for (int st = 0; st < n - gap; st++) { int s = arr[st+gap]; int qq = st; while (qq >= 0) { if (arr[qq] > s) { arr[qq + gap] = arr[qq]; qq -= gap; } else { break; } } arr[qq + gap] = s; } } return; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 10:01:59

3.C语言笔记:指针数组、函数

1.指针数组有若干相同类型的指针变量构成的数组。数据类型 * 数组名[大小] 指针数组&#xff1a;int * p[3];数组指针&#xff1a;int (*p)[4] a;int a 10,b 20, c 20; int * p[3]; p[0] &a; p[1] &b; p[2] &c;printf("a-b-c:%d %d %d\n",…

作者头像 李华
网站建设 2026/5/13 9:57:57

会议任务写不完整理太慢?这样做会议任务管理更清晰

会议任务写不完整理太慢&#xff0c;尤其是做学术要天天跟访谈、讲座录音打交道的朋友&#xff0c;我太懂这种痛苦了。2026我换了这套方法做会议任务管理&#xff0c;原来一天干不完的活现在半小时搞定&#xff0c;任务条理清晰再也不堆活了。我自己做社科方向的研究&#xff0…

作者头像 李华
网站建设 2026/5/13 9:57:22

终极指南:Windows键盘记录工具 - 从零开始快速掌握

终极指南&#xff1a;Windows键盘记录工具 - 从零开始快速掌握 【免费下载链接】keylogger Keylogger for Windows. 项目地址: https://gitcode.com/gh_mirrors/keylogg/keylogger 你是否曾想过了解Windows系统下的键盘输入监控技术&#xff1f;或者需要合法记录自己或授…

作者头像 李华
网站建设 2026/5/13 9:55:25

软件设计师备考笔记【day5】-程序设计语言与语言处理程序

一&#xff0c;编译程序1&#xff0c;编译程序结构图2&#xff0c;编译与解释的区别特性编译方式解释方式处理流程必须完整执行&#xff1a;词法分析 → 语法分析 → 语义分析 → 目标代码生成也会做词法 / 语法 / 语义分析&#xff0c;但不生成目标代码&#xff0c;边分析边执…

作者头像 李华
网站建设 2026/5/13 9:54:47

TVA与传统视觉技术的本质区别——以工业视觉检测为例(9)

重磅预告&#xff1a;本专栏将独家连载新书《AI视觉技术&#xff1a;从入门到进阶》精华内容。本书是《AI视觉技术&#xff1a;从进阶到专家》的权威前导篇&#xff0c;特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“AI教…

作者头像 李华