排序
文章平均质量分 72
ccDLlyy
不忘初心,方得始终
展开
-
插入排序之直接插入(法一)
//根据给定开始排序位置排序#include #include #define MAXN 100//核心void insertsort(int array[],int first,int last)//first前为有序部分,first为第一个无序部分,last为数组界限{ int temp; int location;//当前判断后不后移的位置 for(int原创 2016-08-16 22:23:46 · 506 阅读 · 0 评论 -
插入排序 二分查找插入排序
#include #include #define MAXN 100void insertsort(int array[],int top)//top为界限{ for(int i=1;i<=top;i++){ int left=0; int right=i-1; int temp=array[i]; while(rig原创 2016-08-17 10:14:48 · 540 阅读 · 0 评论 -
排序算法效率比较
排序方法平均时间复杂度最坏情况时间复杂度额外空间复杂度稳定性简单选择排序O(N^2)O(N^2)O(1)不稳定直接插入排序O(N^2)O(N^2)O(1)稳定冒泡排序O(N^2)原创 2017-01-26 20:31:15 · 435 阅读 · 0 评论 -
堆排序
#include #include #include using namespace std;//排序为从小到大,建立最大堆排序//且因为数组的缘故,此处的堆和之前的不一样,之前均第一个节点编号为1//此处为0,满足leftchild=parent*2+1,rightchild=parent*2+2void PrecDown(int array[],int i,int n)//下滤原创 2016-11-16 19:11:36 · 359 阅读 · 0 评论 -
排序之归并排序
要点归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 归并排序的基本思想将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个原创 2016-09-22 22:22:53 · 556 阅读 · 0 评论 -
希尔排序
//不稳定 O(N^2)//一趟Hk排序就是对Hk个独立的子数组执行一次插入排序#include #include #include using namespace std;void ShellSort(int array[],int n){ int increament; int temp; int i,j; for(increament=n/2;increament>0;i原创 2016-11-16 17:52:54 · 312 阅读 · 0 评论 -
插入排序
//插入排序是稳定的,时间复杂度最好O(N),最坏O(N^2),平均O(N^2)//像选择排序,冒泡排序,插入排序......这些基于 比较 交换 相邻元素 进行排序的算法 复杂度平均要O(N^2)#include #include #include using namespace std;void InsertSort(int array[],int n){ int i,j,tem原创 2016-11-16 17:35:00 · 321 阅读 · 0 评论 -
HDU 1872 稳定排序
Description大家都知道,快速排序是不稳定的排序方法。 如果对于数组中出现的任意a[i],a[j](i某高校招生办得到一份成绩列表,上面记录了考生名字和考生成绩。并且对其使用了某排序算法按成绩进行递减排序。现在请你判断一下该排序算法是否正确,如果正确的话,则判断该排序算法是否为稳定的。 Input本题目包含多组输入,请处理到文件结束。 对于每组数据,第一行有原创 2016-10-07 22:30:19 · 558 阅读 · 0 评论 -
排序之桶排序
桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。中文名桶排原创 2016-09-04 23:49:32 · 1024 阅读 · 0 评论 -
排序之冒泡排序
冒泡排序 冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。原创 2016-09-06 23:08:47 · 921 阅读 · 0 评论 -
基数排序
基数排序 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,为桶排法的改进,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序。基本解法第一步原创 2016-09-09 22:29:59 · 776 阅读 · 0 评论 -
插入排序之 直接插入 法二
//对一整个数组排序#include #include #define MAXN 100void insertsort(int array[],int top)//top为数组末尾{ int temp; int location;//当前位置,判断其前一位移不移动到当前位置 for(int i=0;i<=top;i++){ temp=array[i原创 2016-08-16 23:04:46 · 337 阅读 · 0 评论 -
排序之快速排序
//快排为非稳定排序,因为两个相等的元素,在选择某数为基准数的情况下,可能会互换位置,具体去想原理;//当利用C语言快排函数时,可利用结构体的优先元素排序解决不稳定的问题//快排基于分治思想//快排例程很多,自我感觉最全面可靠的是黑皮书教材上的,老美就是厉害,这一点确实得佩服人家,国内的计算机教材真心不敢恭维//几个快排例程://一:教材(赞一个)int Median3(int arr原创 2016-09-07 15:16:12 · 494 阅读 · 0 评论