![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
markey168888
这个作者很懒,什么都没留下…
展开
-
希尔排序
#include<stdlib.h>#include<stdio.h>voidprint(intarr[],intn){inti;printf("\n");for(i=0;i<n;i++){printf("%d",arr[i]);}...原创 2019-11-14 16:47:44 · 79 阅读 · 1 评论 -
位排序
#include<stdlib.h>#include<stdio.h>voidprint(intarr[],intn){printf("\n");inti;for(i=0;i<n;i++){printf("%d",arr[i]);}printf("\...原创 2019-11-14 10:24:16 · 105 阅读 · 0 评论 -
计数排序-纯指针版
#include<stdlib.h>#include<stdio.h>//计数排序intcountSort(intarr[],intlen,intmin,intmax){intbucketsLen=max-min+1;int*buckets=malloc(sizeof(int)*bucketsLen);...原创 2019-11-11 21:14:25 · 107 阅读 · 0 评论 -
希尔排序
希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminshing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组原创 2018-02-03 17:08:55 · 106 阅读 · 0 评论 -
归并排序
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。#include <stdlib.h>#include <stdio.h>//...原创 2018-02-05 15:43:52 · 86 阅读 · 0 评论 -
二分插入排序(折半插入排序)
二分插入排序(又称折半插入排序),与直接插入法的区别是在有序数列中检索插入位置时采用二分法进行搜索#include #include #define SWAP(x,y,t) t=x;x=y;y=t;void print(int arr[],int n) { for (int i = 0; i n; i++) { printf("%6d", arr原创 2018-02-03 15:19:44 · 467 阅读 · 0 评论 -
直接插入排序
直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。#include #include #define SWAP(x,y,t) t=x;x=y;y=t;void print(int arr[],int n) { for (int i = 0; i n原创 2018-02-03 14:43:09 · 101 阅读 · 0 评论 -
选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。#include #include #define SWAP(x,y,t) t=x;x=y;y=t;void print(int arr[],int n) { for (原创 2018-02-03 14:28:24 · 113 阅读 · 0 评论 -
冒泡排序
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,原创 2018-01-31 21:35:17 · 100 阅读 · 0 评论 -
堆排序
堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。...原创 2018-02-03 11:47:26 · 118 阅读 · 0 评论 -
基数排序 算法
基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。此原创 2018-02-02 16:58:14 · 154 阅读 · 0 评论 -
快速 排序
快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。#include<stdlib.h>#...原创 2018-02-02 12:40:01 · 143 阅读 · 0 评论 -
计数排序
计数排序是一个非基于比较的排序算法,它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排序,堆排序)//使用条件,必须限定元素的最大值或者最小值原创 2018-01-31 20:46:54 · 132 阅读 · 0 评论