随笔分类 - C程序设计-数组排序算法
一些自己写的数组排序算法,留个印象,常回来看看。
摘要:简简单单写个笔记,其实下午算法题尽量能拿多少就拿多少的。。。 2022年10月8日 19:45:48 主要考察五个算法: 分治法 回溯法 贪心法 动态规划法 算法特征总结 1.分治法 2.动态规划法(用于求最优解) 3.回溯法(试探) 4.贪心法(用于求满意解) 时间复杂度总结 最后来个其他的排序算
阅读全文
摘要:快速排序 排序思想 1. 选定Pivot中心轴 2. 将大于Pivot的数字放在Pivot的右边 3. 将小于Pivot的数字放在Pivot的左边 4. 分别对左右子序列(此时有左右2个子表),重复前三步操作。 5.注意:第4步中,如果左右子表元素 == 1,那就不用动,证明排序完了。 来个动画演示
阅读全文
摘要:看个动画先,急什么啊 笑死。。。。希尔这孩子打小就聪明 我笑了。 这玩意就是直接插入排序的优化版本,希尔这孩子 太调皮了8 换句话讲: 一开始我们选一个d,这个d是 “长度 / 2 ”而来的【也可以不是/2 但/2用的多】 然后以d为间距,选取距离 d 距的元素,然后进行划分为一组一组,进行直接插入
阅读全文
摘要:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
阅读全文
摘要:C语言-字符串循环左移后补算法 什么是字符串循环左移后补? 左移就是把字符串第 n+1 到 最后一个字符移到最前面,后补就是把1 到 m个字符 移到字符串最后面补上。 实现的核心思想是:先把第1个字符给临时变量然后把第2到n个字符分别向前移动1位,然后把临时变量放入到最后一位。 例:有字符串 abc
阅读全文
摘要:#include<stdio.h> int main() { int arr[10] = {1,3,5,7,9,2,4,6,8,10}; //随便打的 int i,j,temp; // i j 是引用下标的 temp 是用来表示不变的"比数" for(i = 0;i<10;i++) // 从第二个元
阅读全文
摘要:简介 :交换法排序是将每一位数与其后的所有数一一比较,如果发现符合的数据,则交换数据。 过程:首先,用第一个数依次与其后的所有数进行比较,如果存在比值大(小)的数,则交换这两个数,然后-继续向后比较其他数直到最后一个数,然后在使用第二个数与其后面的数进行比较,如果存在比其值大(小)的数,则交换这两个
阅读全文
摘要:第一种写法(前冒泡): /* C程序数组算法 — 冒泡法排序 * 此例子按照 大 -> 小 排序 * 原理:两两相比较,然后进行大小对调 * 比较次数: n^2 次 * 说明:冒泡排序是相对稳定的排序算法,当待排序的列有序时,效果最好! * 时间:2020年7月12日 21:59:22 */ #in
阅读全文
摘要:/* C程序数组算法 — 选择排序法 * 此例子按照 大 -> 小 排序 * 原理:后一个和前一个相比较,若大于/小于 就利用"位置"对调。 * 比较次数: n(n-1) / 2 次 && 互换次数:n-1 次 * 说明:此算法适用于数字比较少的排序 && 此方法和冒泡法相似的一批 * 跟着逻辑走
阅读全文