排序算法
文章平均质量分 51
较为详细地介绍几大排序算法
IOv0id
这个作者很懒,什么都没留下…
展开
-
浅尝桶排序
#include<stdio.h> #include<stdlib.h> #include<string.h> void insertsort(int* bucket,int n) { int i, j; for (i = 1; i < n; i++) for (j = i - 1; j >= 0; j--) { int temp = bucket[i]; while (j >= 0 && bucket[j].原创 2022-03-05 11:20:11 · 54 阅读 · 0 评论 -
Sort函数的应用
Sort是C++std中含有的函数,而C语言中并没有。 因此不仅需要头文件 #include<iostream> 和 #include<cstdio> 还需要 #include<algorithm>(Sort的头文件) sort(a,a+n,cmp)含有三个参数,第一个参数是起始地址,第二个参数是末地址;这两个地址一般是数组(包括结构体数组)。 其表示对[a,a+n)区间内的元素以cmp的方式进行排序,注意是左闭右开。 若对整个数组进行排序则n就等于数组长原创 2022-03-05 23:37:08 · 798 阅读 · 0 评论 -
归并排序小总结
归并排序,是创建在归并操作上的一种有效的排序算法。算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。归并排序思路简单,速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列。 1. 基本思想 归并排序是用分治思想,分治模式在每一层递归上有三个步骤: 分解(Divide):将n个元素分成个含n/2个元素的子序列。 解决(Conquer):用合并排序法对两个子序列递归的排序。 合并(Combine):合并两个已排序的子序原创 2022-02-27 23:13:39 · 408 阅读 · 0 评论 -
两种快速排序的总结
两种快速排序的总结原创 2022-02-13 17:56:42 · 415 阅读 · 0 评论 -
选择排序(Selection Sort)和插入排序(Insert Sort)和希尔排序(Shell’s Sort)
遍历所有数据,先在数据中找出最大或最小的元素,放到序列的起始;然后再从余下的数据中继续寻找最大或最小的元素,依次放到序列中直到所有数据有序。原始数据的排列顺序不会影响程序耗费时间O(n²),相对费时,不适合大量数据排序。 平均时间复杂度为O(n²),空间复杂度为O(1),是一种不稳定的排序算法。 C语言代码如下: #include<stdio.h> int a[100001]; void exmin(int* arr, int num,int len) { int i,k=num,原创 2022-02-16 10:45:57 · 809 阅读 · 0 评论 -
计数排序的简单总结
计数排序不发生比较,较为节约时间,但较为耗费空间,其平均时间复杂度:o(n+k)(平方)、空间复杂度:o(k); 计数排序是稳定排序、外部排序; 局限性在于需要原数组集中在一定范围内,否则该算法极占空间; 动图如下: 算法要注意的是优化后的代码如何写。 3个步骤如下: //第0步 找最大值和最小值 1.算法需要新建一个数组cnt[d],其中d为数组中的“最大值减最小值+1”,在c语言中由于数组下标不能为变量,所以要用到calloc函数为cnt申请空间(代码见后)。 2.用cnt[]数组计原创 2022-02-15 23:57:52 · 197 阅读 · 0 评论