排序
山野雾灯ccc
路漫漫其修远兮,吾将上下而求索。
展开
-
桶排序(图解详细过程)
基数算法(Radix Sort)(桶排序):按照多个关键字进行排序的方法 将所有数据从最低位开始调整,例如个位、十位、百位等等,判断需要几次,需要通过数据中的最大值的位数去决定。 例如,数据中的最大值史999,则所有数据需要进行个位、十位、百位的排序。 可以判断出这种排序适合于所有的数据位数差别不大的情景。桶:队列(先进先出) 10个桶(0-9)时间复杂度:O(kn)空间复杂度:O(n) k是关键字的最大位数稳定性:稳定(没有有跳跃式的交换数据,没有交换数据)原创 2022-10-04 21:56:12 · 263 阅读 · 0 评论 -
快速排序(递归与非递归)详解(图示)
快速排序:(平均性能最快) 1.在待排序数据中选取一个数据作为基准(选择第一个数据) 2.使用基准数据将剩余的数据分成两部分,左部分(不一定有序)都比基准小,//从后向前找比基准值小的数据 右部分(不一定有序)都比基准大,从前往后找比基准值大的数据 前两步封装成函数 OneQuick();一次快排 3.分别在对左部分(至少有两个数据时)和右部分(至少有两个数据时)数据进行快速排序(递归)原创 2022-10-04 21:36:57 · 437 阅读 · 0 评论 -
选择排序具体思路及实现(图解)
选择排序: 每一趟循环都从待排序序列中找到最小值,和待排序序列的第一个值进行交换,从而让待排序序列的长度-1, 直到待排序序列中只剩下一个值,则全部有序。原创 2022-10-03 22:23:56 · 158 阅读 · 0 评论 -
堆排序具体思路以及实现(图解)
堆排序: 可以将数据看做一个完全二叉树,然后将其调整为大跟堆(升序),此时,根节点就可以保证是数据中的最大值, 接下来,将根节点与最后一个节点交换,这时可以将最后一个节点剔除出排序(因为最后一个节点值已经有序),完全二叉树的节点个数 -= 1, 直到这颗完全二叉树的节点个数为1时,则完全有序。原创 2022-10-03 22:17:40 · 515 阅读 · 0 评论 -
递归实现合并排序
递归实现合并排序:其中,算法merge合并2个排好序的数组到新的数组b中,然后由算法copy将合并后的数组段再复制回数组a中。算法merge和copy显然可以在O(n)时间内完成,因此合并排序算法对n个元素进行排序,在最坏情况下所需的计算时间T(n)=2T(n/2)+O(n)(n>1)解此递归方程可知T(n)=)(nlogn)。原创 2022-09-25 22:28:49 · 457 阅读 · 0 评论 -
C语言实现冒泡排序
引入头文件,产生100个随机数,冒泡排序#include<stdio.h>#include<stdlib.h>int main(){ int arr[100]; for (int i = 0; i < 100; i++) { arr[i] = rand() % 100 + 1;//控制随机数在1~100之内 } for (int i = 0; i...原创 2020-02-19 18:36:14 · 260 阅读 · 0 评论 -
C语言实现快速排序
算法:快速排序是基于分治策略的一个排序算法,我们以a[p]为基准元素将a[p:r]划分为3段a[p:q-1],a[q]和a[q+1:r],使得a[p:q-1]中任何一个元素都小于或者等于a[q],a[q+1:r]中任何元素都大于等于a[q],下标q在划分过程中确定。然后在q的左半部分和右半部分递归排序。#include<stdio.h>#define n 7 //定义数组长度void Show(int ar_a[], int length) //打印数组{ for (int i原创 2020-05-15 15:12:28 · 188 阅读 · 0 评论 -
冒泡排序分析及其实现(随机数产生数组)
冒泡排序#include<stdio.h>#include<stdlib.h>void Print(int *p,int n)//打印数组{ for(int i = 0;i < n;i++) { printf("%d\t",*(p+i)); if((i+1)%10==0) { printf("\n"); } } printf("\n");}void ...原创 2020-06-08 22:35:51 · 235 阅读 · 0 评论 -
非递归合并排序
合并排序原创 2020-06-22 18:48:50 · 199 阅读 · 0 评论 -
递归实现合并排序
递归与分治递归实现合并排序:其中,算法merge合并2个排好序的数组到新的数组b中,然后由算法copy将合并后的数组段再复制回数组a中。算法merge和copy显然可以在O(n)时间内万彩城,因此合并排序算法对n个元素进行排序,在最坏情况下所需的计算时间T(n)=2T(n/2)+O(n)(n>1)解此递归方程可知T(n)=)(nlogn)。#include<stdio.h>#include<assert.h>#define length 7void原创 2020-06-24 14:07:37 · 877 阅读 · 0 评论 -
简单快速排序----桶排序
简单快速排序——桶排序。原创 2022-09-09 18:35:43 · 123 阅读 · 0 评论 -
直接插入排序
直接插入排序。原创 2022-09-16 14:19:03 · 216 阅读 · 0 评论 -
希尔(shell)排序(缩小增量排序)
希尔(shell)排序:缩小增量排序原创 2022-09-24 22:05:24 · 329 阅读 · 0 评论