C#学习笔记本之排序算法合集
文章平均质量分 69
介绍了主要的排序算法,后面笔者学到了更多的算法会继续更新的
FAREWELL00075
要成为一个很强的人
展开
-
C#学习笔记本--第四篇(排序算法之快速排序)
/归并排序和快速排序都会用到递归//二者的区别//相同点://1.他们都会用到递归//2.都会把数组分为几个部分//不同点://1.归并排序递归过程中会不断的产生新数组用于合并;快速排序不会产生新数组//2.归并排序是拆分数组完毕再进行排序;快速排序是边排序边拆分//基本原理//选取基准值//产生左右标识//左右比基准//满足则换位//排完一次 基准定位//基准左右递归//直到有序//套路写法//基准值变量//左右游标记录。原创 2024-08-31 21:37:31 · 1022 阅读 · 0 评论 -
C#学习笔记本--第二篇(排序算法之希尔排序,插入排序Plus)
将步长所在位置的元素看成是待排序区,往前一个步长就是他的已排序区,这里就可以看成是前面插入排序的时候的两个区域。希尔排序对插入排序的升级主要就是加入了一个步长的概念 ,通过步长每次可以把原序列分为多个子序列,然后对子序列进行插入排序,在极限情况下可以有效降低普通插入排序的时间复杂度,提高算法效率。第二轮排序和第一轮原理相同,先把步长在再次除以2,获得新的步长,然后将新的一个个小区域中的元素进行比较,直到比较结束,该轮比较结束。第三轮开始时,步长就是一了,就和前面写的插入排序是一样的了。原创 2024-08-29 14:38:00 · 606 阅读 · 0 评论 -
C#学习笔记本--第一篇(排序算法之插入排序)
将需要排序的数组划分为未排序部分和排序部分,在两个部分中间增加一个索引值用来作为分隔。未排序部分不断地与已排序好的部分的元素进行比较,插入到合适的位置,直到未排序的元素为空,停止排序。注意:这两部分处于同一个数组中。原创 2024-08-28 16:01:20 · 357 阅读 · 0 评论 -
C#学习笔记本--第七篇(排序算法之选择排序)
/总结//基本概念//新建了一个中间商//依次比较//找出极值//放入目标位置//比较n轮//套路写法//两层循环//外层轮数//内层寻找//初始索引//记录极值//内层循环外交换。原创 2024-09-06 20:43:05 · 556 阅读 · 0 评论 -
C#学习笔记本--第三篇(排序算法之归并排序)
/基本原理 归并=递归+合并//数组分左右 左右元素相比较//一侧用完放对面//不停放入新数组//递归不停分//分完在排序//排序结束往上走//边走边合并//走到头顶出结果//套路写法//两个函数//一个基本排序规则//一个递归平分数组//注意事项//排序规则函数 在平分数组函数里调用//内部return调用。原创 2024-08-30 15:59:24 · 1134 阅读 · 0 评论 -
C#学习笔记本--第六篇(排序算法之冒泡排序)
/总结//基本概念//两两相邻 不停比较//不停交换//比较 m轮//套路写法//两层循环//外层轮数//内层比较//两值比较//满足交换//如果优化//1.比过不比//2.加入bool。原创 2024-09-05 20:40:33 · 761 阅读 · 0 评论 -
C#学习笔记本--第五篇(排序算法之堆排序)
/构建二叉树//大堆顶调整//堆顶往后放//不停变堆顶//套路写法//三个函数//一个堆顶比较//一个构建大堆顶//一个堆排序//重要规则//最大非叶子节点索引://数组长度/2 - 1//父节点和叶子节点索引//父节点为i//左节点为2i+1//右节点为2i+2//注意//堆是一类特殊的树//堆的通用特点就是父节点会大于等于所有子节点//我们并没有真正的把数组变成堆//只是利用了堆的特点来解决排序问题。原创 2024-09-01 22:48:42 · 1046 阅读 · 0 评论