[几种经典排序算法优劣比较的C程序实现]一、低级排序算法1.选择排序 (1)排序过程 给定一个数值集合,循环遍历集合,每次遍历从集合中选择出最小或最大的放入集合的开头或结尾的位置,下次循环从剩余的元素集合中遍历找出...+阅读
C几种常用的排序算法
算法与具体的语言还是有一定区别的。如果单纯的说算法其实与具体的语言是没有相关性的。
排序算法在C#中的实现均出现在集合中,做为一个成员方法出现在集合的类中。一般情况下排序算法都可以看到Sort成员方法。要注意的是Sort算法与ReSort(反序)中,具体的实现要看具体的集合类。
当然,在不同的集合中实现的排序算法也不尽相同。
Array.Sort排序算法在元素小于16个时使用的是冒泡算法(Insertion sort,插入排序法)
当分区数大于2*log^N(N是范围的输入数组),则使用的是Heapsort(堆排序)
否则使用的是QuickSort(快速排序)。
也就是说你在使用Array数据,虽然简单的使用了Sort成员方法,但在不同的场景下用了不同的排序算法。
ArrayList.Sort使用的是的快速排序。
其他的自序序列并没有实现排序算法,如HeadSet(哈希桶)、IDictionary(字典接口及其子类实现)。
扩展方法中使用了OrderBy方法,目前知道是一种稳定排序,估计是一种插入排序(冒泡),文档中并未透露使用的具体方法。因为OrderBy并非对原序列进行排序,而生生成了新的排序序列——执行OrderBy返回另一处序列,而执行的序列的顺序没有任何的改变。文档中只提供说是稳定排序,所以我估计应该是插入排序(冒泡)——逐个比较已存在的元素大小,确定新元素插入的位置。
C数组排序有哪几种算法
插入排序算法 1.从有序数列和无序数列{a2,a3,…,an}开始进行排序; 2.处理第i个元素时(i=2,3,…,n) , 数列{a1,a2,…,ai-1}是已有序的,而数列{ai,ai+1,…,an}是无序的。用ai与ai-1,a i-2,…,a1进行比较,找出合适的位置将ai插入; 3.重复第二步,共进行n-1次插入处理,数列全部有序。 void insertSort(Type* arr,long len)/*InsertSort algorithm*/ { long i=0,j=0;/*iterator value*/ Type tmpData; assertF(arr!=NULL,"In InsertSort sort,arr is NULL\n"); for(i=1;i0 & tmpData
急!C语言程序数据结构排序算法的问题
#include"stdio.h" #include"stdlib.h" #include "string.h" #define Max 100 //假设文件长度 typedef struct{ //定义记录类型 int key; //关键字项 }RecType; typedef RecType SeqList[Max+1]; //SeqList为顺序表,表中第0个元素作为哨兵 int n; //顺序表实际的长度 //
1、 直接插入排序的基本思想:每次将一个待排序的记录,按其关键字大小插入到前面已排序好的子文件中的适当位置,直到全部记录插入完成为止。 //==========直接插入排序法====== void InsertSort(SeqList R) { //对顺序表R中的记录R[1‥n]按递增序进行插入排序 int i,j; for(i=2;i
延伸阅读:
如何在现代C中实现经典排序算法冒泡法大家都较熟悉。其原理为从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n]。同理对a[1],a[2],...a[n-1]处理,即完成排序。下面列出其代码:void b...
C语言的快速排序的算法是什么啊快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一...
C语言实现七种排序算法的演示代码!(1)“冒泡法” 冒泡法大家都较熟悉。其原理为从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n]。同理对a[1],a[2],...a[n-1]处理,即完成排序。下面列...
急!C语言程序数据结构排序算法的问题#include"stdio.h" #include"stdlib.h" #include "string.h" #define Max 100 //假设文件长度 typedef struct{ //定义记录类型 int key; //关键字项 }RecType; typedef RecType Se...
C语言高效排序算法的原理及代码快速排序是通过分治的思想来实现的。即找一个 中间数,让小于这个数字的放在他左边,大于这个数字的放在右边!然后逐渐放小! 以升序为例: int qsort(ArrayStule *aS,int low,int hi...
c语言常用排序放法1稳定排序和非稳定排序 简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就 说这种排序方法是稳定的。反之,就是非稳定的。 比如:一组数排序...
排序算法c语言n个数字的排序我近期做练习的时候专门为排序做了一个c程序,你看看怎么样,包括了很多排序方法 #include#include#include#define LEN 10 //初始化数组 void init(int *arr,int len); //打印数...
排序算法的排序算法排序的算法有很多,对空间的要求及其时间效率也不尽相同。下面列出了一些常见的排序算法。这里面插入排序和冒泡排序又被称作简单排序,他们对空间的要求不高,但是时间效率却不稳...
Vb常用排序算法课设Vb常用排序算法课设,归并排序算法实现和比较2设计内容及要求:内容:实现两路归并排:Option Explicit Dim Arry() As String Private Sub Command1_Click() Dim i As Long, j As L...